如何用PhpStorm来debuggingDocker容器

无法使用以下configurationdebuggingWeb应用程序:

Dockerfile:

FROM php:7-fpm RUN yes | pecl install xdebug \ && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_autostart=0" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_host=site.dev" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_log=/var/www/site/xdebug.log" >> /usr/local/etc/php/conf.d/xdebug.ini WORKDIR /var/www/site 

nginx服务器(site.conf):

 server { server_name site.dev www.site.dev; root /var/www/site/src/UI/Web/Silex/Public; ... } 

泊坞窗,compose.yml:

 version: '2' services: php: container_name: acme_php build: etc/docker/development/php volumes: - ./:/var/www/site nginx: container_name: acme_nginx build: etc/docker/development/nginx ports: - "80:80" volumes: - ./:/var/www/site - ./etc/docker/development/nginx/site.conf:/etc/nginx/conf.d/site.conf links: - php 

运行服务器:

 docker-compose up -d --build 

服务器:

在这里输入图像说明

debugging:

在这里输入图像说明

运行/debuggingconfiguration:

在这里输入图像说明

按下错误button会打开Chrome,但不会停在断点处:

在这里输入图像说明

运行phpinfo()看起来像(xdebug区域):

在这里输入图像说明

xdebug.log:

 I: Connecting to configured address/port: site.dev:9000. I: Connected to client. :-) -> <init xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" fileuri="file:///var/www/site/src/UI/Web/Silex/Public/index.php" language="PHP" xdebug:language_version="7.1.5" protocol_version="1.0" appid="6" idekey="18032"><engine version="2.5.4"><![CDATA[Xdebug]]></engine><author><![CDATA[Derick Rethans]]></author><url><![CDATA[http://xdebug.org]]></url><copyright><![CDATA[Copyright (c) 2002-2017 by Derick Rethans]]></copyright></init> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="break" reason="ok"><xdebug:message filename="file:///var/www/site/src/UI/Web/Silex/Public/index.php" lineno="5"></xdebug:message></response> -> <response xmlns="urn:debugger_protocol_v1" xmlns:xdebug="http://xdebug.org/dbgp/xdebug" status="stopping" reason="ok"></response> 

为什么它不停在断点? 🙁

更改使其工作:

Dockerfile:

 FROM php:7-fpm RUN yes | pecl install xdebug \ && echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \ && echo "xdebug.remote_autostart=0" >> /usr/local/etc/php/conf.d/xdebug.ini \ WORKDIR /var/www/site 

泊坞窗,compose.yml:

 version: '2' services: php: container_name: acme_php build: etc/docker/development/php volumes: - ./:/var/www/site links: - db environment: XDEBUG_CONFIG: "remote_host=192.168.1.99" PHP_IDE_CONFIG: "serverName=site.dev" nginx: container_name: acme_nginx build: etc/docker/development/nginx ports: - "80:80" volumes: - ./:/var/www/site - ./etc/docker/development/nginx/site.conf:/etc/nginx/conf.d/site.conf links: - php 

/ etc / hosts(主机):

 127.0.0.1 site.dev 

感谢您的意见@LazyOne的所有帮助