어떤 이유로 PHPStorm은 원격 호스트에서 웹 서버에 액세스 할 때 디버그 연결을 수신하지 않습니다. PHPStorm은 전혀 수신하지 않는 것처럼 동작합니다. 동일한 호스트에서 웹 서버에 액세스하면 디버그 연결이 허용되고 예상되는 동작 인 첫 번째 줄에서 중단됩니다.
내 현재 설정 :
호스트 컴퓨터 : Windows 10 PRO, Chrome 브라우저, 방화벽 비활성화 (테스트를 위해)
게스트 컴퓨터 : 호스트 컴퓨터의 Hyper-v VM에 설치된 Ubuntu 18.04
게스트 머신 내부에는 다음 컨테이너를 실행하는 Docker가 설치되어 있습니다.
PHP-FPM은 XDEBUG 9009 동안 포트 9000을 사용하도록 구성됩니다.
PHP 구성 :
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9009
Apache fcgi 구성 :
<IfModule proxy_fcgi_module>
<Proxy "fcgi://${PHP_SERVER_NAME}:${PHP_SERVER_FCGI_PORT}" enablereuse=on max=10>
</Proxy>
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://${PHP_SERVER_NAME}:${PHP_SERVER_FCGI_PORT}"
</FilesMatch>
PHPStorm은 Ubuntu 게스트 시스템에 설치된 것과 같습니다.
요약하자면 :
게스트 컴퓨터의 Chrome / Firefox에서 웹 사이트에 액세스하면 PHPStorm이 연결을 수신하고 예상대로 중단됩니다.
호스트 컴퓨터에서 똑같은 작업을 수행하면 PHPStorm이 연결을 수락하지 않고 웹 사이트가 렌더링됩니다.
그래서 내 질문은 호스트에서 액세스 할 때 문제가 디버그 연결을 생성하지 않는 원인이 무엇입니까?
교체 xdebug.remote_connect_back
로하는 것은 xdebug.remote_host
문제를 해결하는 것 같다.
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = IP_OF_HOST_RUNNING_PHPSTORM
xdebug.remote_port = 9009
내 이해에서 remote_connect_back이 작동하지 않은 이유는 다음과 같습니다.
활성화되면 xdebug.remote_host 설정이 무시되고 Xdebug는 HTTP 요청을 한 클라이언트에 연결을 시도합니다. $ _SERVER [ 'HTTP_X_FORWARDED_FOR'] 및 $ _SERVER [ 'REMOTE_ADDR'] 변수를 확인하여 사용할 IP 주소를 찾습니다.
xdebug.remote_addr_header가 구성된 경우 구성된 이름의 $ SERVER 변수가 $ _SERVER [ 'HTTP_X_FORWARDED_FOR'] 및 $ _SERVER [ 'REMOTE_ADDR'] 변수보다 먼저 확인됩니다.
따라서 xdebug.remote_connect_back
디버거를 사용하면이 경우 GUEST가 아닌 HOST 인 REQUESTER의 IP로 디버그 연결을 보냅니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다