itsource

xdebug가 작동하는지 확인합니다.

mycopycode 2022. 9. 27. 23:52
반응형

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.do.ini, /etc/php5/apache2/mysqli 파일을 구문 분석했습니다.ini

phpinfo()에 기재되어 있지 않습니다.

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

하지만 xDebug의 몇 가지 측면이 작동한다면 모두 작동한다고 가정해야 합니다.

이 경우 다음을 수행하여 xDebug가 설치되어 있는지 확인할 수 있습니다.

1)phpinfo().-- xDebug 를 됩니다.만약 그게 거기 있다면, 효과가 있을 거라고 장담할 수 있어.

에 들지 2) 을해 .var_dump() xDebug의 출력을 변경합니다.var_dump()추가 정보를 포함합니다.이것이 설정되어 있는 경우는, xDebug가 동작하고 있습니다.

3) xDebug는 PHP 오류 출력을 수정합니다.xDebug가 설치된 상태에서 프로그램이 크래시되면 표준 PHP 크래시 출력보다 오류에 대한 더 많은 정보를 얻을 수 있습니다.

다수의 도우미 기능을 PHP.4) xDebug에 합니다.이것들 중 어느 것이든 작동되는지 확인해 보세요.를 들어, 「」는,xdebug_get_code_coverage()가 존재하여 어레이를 반환해야 합니다.xDebug를 선택합니다.그렇지 않다면 그렇지 않다.

달려.

php -m -c

.[Zend Modules]딩되어있있있딘어어을딘을!!!!!!!!!

NB

Ubuntu를 Ubuntu가 되지 않을 수 .우분투하다.】【우분투】【우분.】xdebug의 설정/etc/php5/apache2/php.ini/etc/php5/cli/php.ini.

내 Xdebug 설정:

Xdebug 3의 경우

[xdebug]
zend_extension = /usr/lib/php5/20121212/xdebug.so
xdebug.mode=debug
xdebug.client_host=localhost
;# The default is 9003
xdebug.client_port=9000

Xdebug 2.9의 경우

[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 does exists. ★★★★★★★★★★★★★★★★★」xDebug doesn't exists.:

<?=sprintf('xDebug does%s exists.', extension_loaded('xdebug') ? '' : "n't");

CLI의 경우:

php -r "printf('xDebug does%s exists.' . PHP_EOL, 
extension_loaded('xdebug') ? '' : 'n\'t');"

xdebug를 Netbeans 8.0.2와 연동시키기 위해 거의 24시간 동안 노력한 끝에 Ubuntu 및 Ubuntu 관련 모든 스택에서 사용할 수 있는 솔루션을 찾았습니다.

문제 1: PHP 및 xdebug 버전이 호환되어야 합니다.

Linux 셋업을 실행하고 있을 때 xdebug를 설치할 때 적절한 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_의 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]가 존재하는지 확인합니다.모듈이 작동해야 합니다.사실 코드 전체를 복사하여 붙여넣기만 하면 더 행복한 사람이 될 수 있습니다. :D

주의: zend_extension 경로는 매우 중요합니다.이 예에서는 현재 버전의 PHP 엔진을 가리키고 있지만 먼저 /usr/lib/php5로 이동하여 번호가 지정된 폴더가 올바른 폴더인지 확인해야 합니다.여기에 보이는 대로 이름을 조정하고 폴더 내부를 체크하여 xdebug.so가 실제로 있는지 확인합니다.모든 걸 제대로 했다면 그럴 거야

이제 xdebug로.ini가 생성되었습니다.모듈을 활성화 할 시간입니다.이렇게 하려면 콘솔을 열고 다음과 같이 입력합니다.

php5enmod xdebug

모든 것이 잘되면 PHP는 이 파일에 대한 2개의 링크를 만들었습니다.하나는 /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 스크립트를 생성하여 실행합니다.모든 것이 순조로워진다면, 다음과 같은 것을 알 수 있습니다.

여기에 이미지 설명 입력

이 경우 Apache도 모듈을 로드하고 있습니다.사용할 준비가 되어 있을 것입니다.이제 Netbeans가 올바르게 디버깅되는지 확인합니다.매우 간단한 스크립트를 생성하여 변수를 추가하고 값을 지정한 후 중단점을 설정합니다.이제 CTRL+F5를 누르고 디버거 패널에서 "Step in"을 클릭하여 다음과 같은 메시지가 표시되는지 확인합니다.

xdebug 동작 중

툴/옵션/php에서 Netbeans 설정을 확인하여 디버깅하십시오.다음과 같이 표시됩니다.

Netbeans에서의 디버깅 설정

나는 이것이 다소 모호하고 혼란스러운 이 문제를 밝혀주길 바란다.

행운을 빈다!

KsaRs 응답을 확장하고 명령줄에서 xdebug를 체크할 수 있도록 하기 위해:

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

xdebug 3부터는 다음 명령줄을 사용할 수 있습니다.

php -r "xdebug_info();"

또한 xdebug 설치에 대한 유용한 정보가 표시됩니다.

것을 실행할 수 있다php 표시

<?php
phpinfo();
?>

출력 페이지 전체를 복사하여 이 링크에 붙여넣습니다.그런 다음 분석합니다.Xdebug가 설치되어 있는지 여부가 표시됩니다.또, 인스톨을 완료하도록 지시합니다.

Eclipse를 사용하는 경우 XDebug 모드에서 실행하는 동안 매직 상수 __FILE__는 항상 다음과 같이 평가됩니다.

xdebug://debug-eval

따라서 세션이 XDebug 아래에 있는 경우 다음 체크가 true로 반환됩니다.

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

당신의 질문에서 당신의 phpinfo가 /etc/php5/apache2/conf.d/xdebug.ini에 xdebug 설정을 로드하고 있다고 기술하고 있다고 언급했습니다만, 온라인의 많은 명령에서 xdebug 설정을 ph.ini에 넣도록 요구받았을 가능성이 있습니다(그리고 그것이 내가 한 것입니다).n /etc/php5/apache2/php.ini에서 [XDebug] 구성 설정을 삭제하고 대신 /etc/php5/apache2/conf.d/xdebug.ini에 저장해야 합니다./etc/php5/apache2/php.ini에서 삭제하고 /etc/php5/apache2/conf.d/xdebug를 넣었습니다.대신 ini를 재기동하고 Apache를 재기동했습니다!!

따라서 /etc/php5/apache2/conf.d/xdebug.ini에 다음을 입력합니다.

[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"

그 후 /etc/syslog5/syslog2/syslog.ini에서도 이 파일을 삭제합니다.

그럼 다음 작업을 수행합니다.

sudo 서비스 apache2 재시작

그럼 될 거야!!!

터미널에서 이 명령어 php -v를 사용하여 xdebug 설치 여부를 확인할 수 있습니다.

여기에 이미지 설명 입력

xDebug 3에서는 구성 옵션이 변경되었습니다.PhpStorm Manual: Configure xDebug도 이에 대해 잘 설명합니다(업로드 중인 검증자 스크립트가 포함되어 있습니다.설정할 수 없는 PECL 버전을 조작한 후, 대답은 다음과 같습니다.

su
dnf remove php-xdebug
dnf install php-devel

cd /usr/src
wget https://xdebug.org/files/xdebug-3.0.4.tgz
tar -xvzf xdebug-3.0.4.tgz
cd xdebug-3.0.4/
phpize
./configure --enable-xdebug
make
make install

xDebug 3은 이러한 구성과 함께 동작합니다(예:[xdebug]섹션) :

; Enable xdebug extension module
zend_extension=xdebug.so

[xdebug]
xdebug.mode=debug
xdebug.client_host=localhost
xdebug.client_port=9003

다음 두 개의 파일에 들어갑니다.

nano /etc/php-cli.d/xdebug.ini
nano /etc/php.d/xdebug.ini 

다음으로 네트워크 연결을 허용하고 INI를 새로고침할 수 있습니다.

setsebool -P httpd_can_network_connect 1
systemctl restart php-fpm.service

그리고 마지막으로:

php -r "xdebug_info();"

이 질문이 좀 오래된 건 알지만 xdebug 3이 나왔고 많은 게 바뀌었어요.

php.exe -r "xdebug_info();"

아직 동작하지만, php.ini 의 설정은 다릅니다.

xampp 설치의 경우(php 8.0.12)는 다음과 같습니다.

[xdebug]
zend_extension="C:\xampp\php\zend_ext\php_xdebug-3.1.1-8.0-vs16-x86_64.dll"
xdebug.output_dir="c:/xampp/xdebug"
xdebug.mode=debug
xdebug.log=c:/xampp/xdebug/xdebug.log
xdebug.log_level=7
xdebug.profiler_output_name=%p.%t.cgrind

이 또한 a를 쓸 것이다.xdebug.log다음 내용을 포함하는 파일:

[8028] Log opened at 2021-10-28 09:42:33.878279
[8028] [Config] INFO: Trigger value for 'XDEBUG_TRIGGER' not found, falling back to 'XDEBUG_SESSION'
[8028] [Config] INFO: No shared secret: Activating
[8028] [Step Debug] INFO: Connecting to configured address/port: localhost:9003.
[8028] [Step Debug] ERR: Time-out connecting to debugging client, waited: 200 ms. Tried: localhost:9003 (through xdebug.client_host/xdebug.client_port) :-(
[8028] Log closed at 2021-10-28 09:42:34.298475

for wampserver xdebug가 포함되어 있어 개봉 즉시 활성화됩니다.그래서 같이 일하기가 좀 더 편해졌네요.

이 블로그에서 다음 절차를 시도해 볼 수 있습니다.links

문제를 해결하는 데 도움이 됩니다.디버깅 폴더를 exclusive에 추가하여 중단점을 지정하면 오류가 반환됩니다.

언급URL : https://stackoverflow.com/questions/14046501/check-if-xdebug-is-working

반응형