PhpStorm 10.0.3이 있고 원격 서버에서 실행되는 CLI 스크립트를 디버깅하려고합니다.XDebug with PhpStorm : CLI 스크립트 디버깅, 역 SSH 터널을 통한 연결
내 로컬 컴퓨터에서 원격 서버로 역방향 SSH 터널을 설정했습니다.
원격 서버 Xdebug는이 구성되어 다음
# /etc/php5/apache2/conf.d/20-xdebug.ini
# /etc/php5/cli/conf.d/20-xdebug.ini
zend_extension=xdebug.so
xdebug.remote_enable=true
xdebug.idekey=PHPSTORM
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
내가 이런 스크립트를 시작하려고 :
php -dxdebug.remote_autostart=On /var/www/index.php
PhpStorm 디버그 탭의 열 취득 (때로는 그것의 회색)하지만, 파일 매핑을 수정하라는 메시지를 표시하지 않으며 디버깅 된 파일을 열지 않고 중단 점 줄을 가리 키지 않습니다. 디버깅 세션을 수동으로 종료 할 때까지 원격 서버 스크립트 실행이 차단됩니다.
내가 GET 매개 변수를 사용하여 아파치를 통해 디버깅 :
?XDEBUG_SESSION_START=1
디버깅 잘 작동하고 내가 파일 매핑을 수정하라는 메시지가 얻을.
그 이유는 무엇입니까?
나는 아래 공부했지만, 그것은 내 문제가 해결되지 않습니다 https://confluence.jetbrains.com/display/PhpStorm/Debugging+PHP+CLI+scripts+with+PhpStorm (질문 : 내 스크립트가 이제 디버깅 remote_autostart 설정 설정없이 시작해야한다 어떻게 녹색 힌트에서 그들은 선택 사항이라고한다.)
및 XDebug: how to debug remote console application? (Re : XDEBUG_CONFIG 변수의 remote_host를 로컬 컴퓨터로 설정하면 외부 IP [복사 된 bash 스 니펫 확인]이 작동하지 않는 것 같습니다. 로컬 컴퓨터는 외부 IP를 통해 액세스 할 수 없으며 역방향으로 만 액세스 할 수 있습니다. SSH 터널)
export XDEBUG_CONFIG="remote_host=$(echo $SSH_CLIENT | awk '{print $1}') idekey=PHPSTORM"
그냥 생각해보십시오. 원격 서버에는 두 개의 서로 다른 PHP가 설치되어있을 수 있습니다. 하나는 cli에서 호출하고 다른 하나는 apache에 바인딩합니다. apache에서 사용하는 php (php5_module'libphp5.so')가 cli와 동일한 지 확인하고, 결국 php.ini 파일을 수정하십시오. php5는 예를 들어, 자신의 것을 적절하게 사용하십시오. – YvesLeBorg
해당 호스트에 대한 SFTP 액세스 권한이 있습니까? 그렇다면 IDE에서 SSH를 통해 직접 CLI 스크립트를 실행/디버깅 할 수 있습니다 (원격 PHP 인터프리터와 SFTP를 사용하여 배포하십시오). https://confluence.jetbrains.com/display/PhpStorm/Remote+debugging+in+PhpStorm+via+SSH+tunnel – LazyOne
1) * "디버깅은 remote_autostart 설정없이 시작해야합니다. 어떻게 설정해야합니까?"* 코드 수정 옵션으로 시도 할 수 있습니다 - 코드에'xdebug_break();'를 넣으십시오 (프로그램 중단 점은 또한 디버그 세션을 시작합니다) 2) xdebug 통신을 위해 9001 포트를 사용하십시오 case - 서버 측 포트, 로컬 PhpStorm은 여전히 9000을 사용할 수 있음) - 서버의 TCP 9000은 이미 php-fpm (해당 도구의 표준 포트)에 의해 점유되어있을 수 있으며이 경우 디버그 연결은 거의 즉시 종료됩니다 예상 출력 (디버그 프로토콜)로 응답하지 않습니다. – LazyOne