我正在尝试使用PhpStorm调试Symfony应用程序,遵循以下教程:https://gist.github.com/chadrien/c90927ec2d160ffea9c4
我做的完全相同,但效果不好。
php-fpm:
build: ./php
container_name: php-fpm-symfony
links:
- db
ports:
- 9000:9000
- 8448:8448
- 8000:8000
working_dir: /var/www/html/
volumes:
- ../:/var/www/html
volumes_from:
- data
tty: true
env_file:
- ./docker.env
environment:
XDEBUG_CONFIG: remote_host=192.168.0.176
Dockerfile
# XDEBUG
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=off" >> /usr/local/etc/php/conf.d/xdebug.ini
当我用PhpStorm启动调试时,似乎连接正在发生。我的浏览器中会弹出一个新窗口。我的Symfony主页就在这里。但它并没有停留在我的断点上。并且逐步调试不起作用。
我做错什么了吗?
使用docker-for-mac公开9000是错误的 - 你的方向错了。
IDE,PHPstorm,侦听端口9000,这意味着,它在这个9000上打开一个套接字,它不连接到这个端口。
另一方面,xdebug连接,附加到通常是localhost的端口9000 - 如果它找到了一个监听器,它们会说话。这个,因为在9000上没有服务,转发端口不仅没有意义,它实际上甚至会伤害你,因为端口9000将被带到OSX主机localhost上,你的PHPstorm将无法再监听它。
你想做的是
多数民众赞成就是这样
另一个答案是正确的,您必须删除端口部分中的- 9000:9000
。
另一个问题是您的docker容器需要知道docker主机的IP地址。这是正确的端口9000连接到的。
自docker 18.03发布以来,您可以在运行docker容器时使用host.docker.internal
DNS条目。
您可以在安装xdebug的RUN语句中添加另一个回显线:
&& echo "xdebug.remote_host=host.docker.internal" >> /usr/local/etc/php/conf.d/xdebug.ini \