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 스크립트를 만들고 실행합니다. 모든 것이 제대로 된 경우 다음을 확인해야합니다.
이것이 보이면 아파치도 모듈을로드했고 아마 갈 준비가 된 것입니다. 이제 Netbeans가 올바르게 디버그되는지 살펴 보겠습니다. 매우 간단한 스크립트를 만들고, 변수를 추가하고, 값을 부여하고, 중단 점을 설정합니다. 이제 CTRL + F5를 누르고 디버거 패널에서 "step in"을 클릭하고 다음과 같은 결과가 나오는지 확인합니다.
tools / options / php에서 디버깅을 위해 Netbeans 구성을 확인하는 것을 잊지 마십시오. 다음과 같이 보일 것입니다.
나는 이것이 다소 모호하고 혼란스러운 문제에 대한 빛을 비추 길 바랍니다.
최고의 소원!
phpinfo()
로드 된 확장으로보고 합니까 ? 그게 "일"이란 뜻입니까?