code

xdebug가 작동하는지 확인

codestyles 2020. 11. 3. 08:04
반응형

xdebug가 작동하는지 확인


텍스트 편집기 나 IDE를 설치하지 않고 xdebug가 작동하는지 테스트 할 수 있습니까? 즉, PHP 코드를 디버깅 할 수 있는지 여부를 테스트 할 수 있습니까?

phpinfo ()에서 xdebug가 나오는 유일한 부분은 다음과 같습니다.

추가 .ini 파일은 /etc/php5/apache2/conf.d/mysql.ini, /etc/php5/apache2/conf.d/mysqli.ini, /etc/php5/apache2/conf.d/pdo.ini, /etc/php5/apache2/conf.d/pdo_mysql.ini, /etc/php5/apache2/conf.d/xdebug.ini

다른 곳에서는 phpinfo ()에 언급되어 있지 않습니다.


실제로 디버깅을하지 않고 는 디버거가 작동하는지 확신 할 수 없습니다 .

그러나 당신은 꽤 확신 할 수 있습니다. xDebug의 일부 측면이 작동한다면 모든 것이 작동 할 것이라고 가정해야합니다.

따라서 다음을 시도하여 xDebug가 설치되고 제자리에 있는지 확인할 수 있습니다.

1) phpinfo()-xDebug를 포함하여로드 된 모든 확장이 표시됩니다. 그것이 있다면 그것이 작동하고 있다는 것이 안전한 내기입니다.

2) 그것으로 충분하지 않다면, var_dump()기능을 사용해 볼 수 있습니다 . xDebug는 var_dump()추가 정보를 포함하도록 의 출력을 수정합니다 . 이것이 제자리에 있으면 xDebug가 작동하는 것입니다.

3) xDebug는 PHP의 오류 출력을 수정합니다. 프로그램이 xDebug와 충돌하면 표준 PHP 충돌 출력보다 실패에 대한 더 많은 정보를 얻을 수 있습니다.

4) xDebug는 또한 PHP에 많은 도우미 함수를 추가합니다. 작동하는지 확인하기 위해 이들 중 하나를 시도 할 수 있습니다. 예를 들어, 함수 xdebug_get_code_coverage()가 존재하고 배열을 반환해야합니다. 그렇다면 xDebug가 설치됩니다. 그렇지 않다면 그렇지 않습니다.


운영

php -m -c

터미널에서 [Zend Modules]. 로드되면 어딘가에있을 것입니다!

NB

당신이 우분투를 사용하는 경우에서 Xdebug는 설정을 추가해야하기 때문에, 여기에 표시하지 않을 수 있습니다 /etc/php5/apache2/php.ini/etc/php5/cli/php.ini. 내 것은

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

다음과 같이 시도하면 "존재"또는 "존재하지 않음"이 반환됩니다.

<?php
echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';

Netbeans 8.0.2에서 작동하도록 xdebug를 만들기 위해 거의 24 시간 동안 쓴 노력 끝에 모든 Ubuntu 및 Ubuntu 관련 스택에서 작동하는 솔루션을 찾았습니다.

문제 번호 1 : PHP와 xdebug 버전이 호환되어야 함

때로는 Linux 설정을 실행하고 xdebug를 설치하기 위해 apt-get을 실행하면 적절한 xdebug 버전이 제공되지 않습니다. 제 경우에는 최신 PHP 버전이 있지만 오래된 xdebug 버전이 있습니다. 내 현재 Xubuntu 버전 때문인 것 같습니다. 소프트웨어 버전은 실행중인 OS 버전에 따라 달라지는 리포지토리에 따라 다릅니다.

솔루션 : PHP에는 PECL이라는 깔끔한 확장 관리자가 있습니다. 여기제공된 지침에 따라 실행하십시오. 먼저 댓글에서 회원이 지적했듯이 PECL이 작동하려면 PHP의 개발자 패키지를 설치해야합니다.

sudo apt-get install php5-dev

그런 다음 PECL을 사용하여 최신 안정 버전의 xdebug를 설치할 수 있습니다.

sudo pecl install php5-xdebug

일단 실행하면 적절한 버전의 xdebug가 설치되지만 사용할 준비가되지는 않습니다. 그 후에 활성화해야합니다. 이를 수행하는 방법에 대한 많은 제안을 보았지만 문제는 PHP가 클라이언트와 서버 (이 경우 Apache) 모두에서 활성화하려면 일부 모듈이 필요하다는 것입니다. 여기서 가장 좋은 방법은 php5enmod라는 모듈을 활성화하는 내장 방법을 사용하는 것 같습니다. 사용법은 여기 에 설명되어 있습니다 .

문제 번호 2 : 모듈을 올바르게 활성화

먼저 / etc / php5 폴더로 이동해야합니다. 거기에는 apache2, cli 및 mods_available 3 개의 폴더가 있습니다. mods_available 폴더에는 주어진 모듈을 활성화하기위한 지침이있는 텍스트 파일이 있습니다. 이름 규칙은 [module] .ini입니다. 몇 가지 내부를 살펴보고 어떻게 설정되어 있는지 확인하십시오.

이제 mods_available 폴더 안에 ini 파일을 만들어야합니다. xdebug.ini라는 파일을 만들고 파일 안에 다음을 붙여 넣습니다.

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000

위의 예와 똑같이 지시어 [xdebug]있는지 확인하십시오 . 모듈이 작동하려면 필수적입니다. 사실, 전체 코드를 복사하여 붙여 넣으면 더 행복한 사람이 될 것입니다. :디

참고 : zend_extension 경로는 매우 중요합니다. 이 예제에서는 현재 버전의 PHP 엔진을 가리 키지 만 먼저 / usr / lib / php5로 이동하여 숫자로 이름이 지정된 폴더가 올바른지 확인해야합니다. 거기에 보이는 이름으로 이름을 조정하고 폴더 내부를 확인하여 xdebug.so가 실제로 있는지 확인하십시오. 당신이 모든 것을 제대로했다면 그래야만합니다.

이제 xdebug.ini가 생성되었으므로 모듈을 활성화 할 차례입니다. 이를 수행하려면 콘솔을 열고 다음을 입력하십시오.

php5enmod xdebug

모든 것이 올바르게 진행되면 PHP는이 파일에 대한 두 개의 링크를 생성했습니다. 하나는 /etc/php5/apache2/conf.d 내부에 다른 하나는 /etc/php5/cli/conf.d 내부에 있습니다

Apache 서버를 다시 시작하고 콘솔에 다음을 입력하십시오.

php -v

다음과 같은 결과를 얻을 수 있습니다.

PHP 5.5.9-1ubuntu4.6 (cli) (built: Feb 13 2015 19:17:11) 
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
with Xdebug v2.3.1, Copyright (c) 2002-2015, by Derick Rethans

즉, PHP 클라이언트가 xdebug.ini 파일을 읽고 xdebug.so 모듈을로드했습니다. 여태까지는 그런대로 잘됐다.

이제 웹 서버 어딘가에 phpinfo 스크립트를 만들고 실행합니다. 모든 것이 제대로 된 경우 다음을 확인해야합니다.

여기에 이미지 설명 입력

If you see this, Apache also loaded the module, and you are probably ready to go. Now let's see if Netbeans will debug correctly. Create a very simple script, add some variables, give them values, and set a break point on them. Now hit CTRL+F5, click on "step in" on your debugger panel, and see if you get something like this:

xdebug 작동

Remember to check Netbeans configuration for debugging, under tools/options/php. It should look something like this:

Netbeans에서 구성 디버깅

I hope this sheds some light on this rather obscure, confusing problem.

Best wishes!


you can run this small php code

<?php
phpinfo();
?>

Copy the whole output page, paste it in this link. Then analyze. It will show if Xdebug is installed or not. And it will give instructions to complete the installation.


If you are using Eclipse then please note that while running on XDebug mode the magic constant __FILE__ will always be evaluated to:

xdebug://debug-eval

So the following check will return true if your session is under XDebug:

$is_xdebug = false !== strpos(__FILE__,'xdebug'); // true while on XDebug

in your question you mentioned that your phpinfo was stating that apache was loading xdebug's configuration in /etc/php5/apache2/conf.d/xdebug.ini In many of the instructions online you may note that they ask you to put xdebug config in php.ini (and that is what I did) HOWEVER, if the configuration is set to /etc/php5/apache2/conf.d/xdebug.ini, then you should remove the [XDebug] configuration settings from /etc/php5/apache2/php.ini and put it in /etc/php5/apache2/conf.d/xdebug.ini INSTEAD. Once I removed from /etc/php5/apache2/php.ini and put in /etc/php5/apache2/conf.d/xdebug.ini instead, and restarted apache, it worked!!

Therefore, in your /etc/php5/apache2/conf.d/xdebug.ini, put the following:

[XDebug]
zend_extension="/usr/lib/php5/20121212+lfs/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_port="9000"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/home/paul/tmp"

xdebug.remote_host="localhost"
xdebug.remote_handler="dbgp";
xdebug.idekey="phpstorm_xdebug"

then remove this from the /etc/php5/apache2/php.ini if you put it there as well.

Then do:

sudo service apache2 restart

Then it should work!!!


KsaR 응답 을 확장 하고 명령 줄에서 xdebug를 확인할 수있는 가능성을 제공하기 위해 :

php -r "echo (extension_loaded('xdebug') ? '' : 'non '), 'exists';"

참고 URL : https://stackoverflow.com/questions/14046501/check-if-xdebug-is-working

반응형