在Docker中用PhpStorm和XdebugdebuggingSymfony2

我试图通过以下教程来debuggingPhpStorm的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启动debugging时,好像连接正在发生。 我的浏览器popup一个新窗口。 我的Symfony主页在这里。 但是这并不会停留在我的断点上。 而一步一步的debugging不起作用。

我做错什么了吗?

用docker-for-mac暴露9000是错误的 – 你的方向是错的。

IDE,PHPstorm,监听端口9000,这意味着,它打开这个9000上的一个套接字,它不连接到这个端口。

另一方面,xdebug通常连接到本地主机的端口9000,如果它find一个监听者,他们就会说话。 这样,由于9000上没有服务,转发端口不仅没有意义,而且实际上也会损害您的端口,因为端口9000将在OSX主机本地主机上运行,​​您的PHP风暴将不再能够监听。

你想要做的是

  1. 删除'9000:9000'
  2. 使用此configurationhttps://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c a)为您的OSX本地环回设备创build一个别名b)configuration您的FPM xdebug connect_back到这个IP
  3. 现在,非常简单,只要按下这个buttonhttps://drive.google.com/file/d/0B3SrxyqujSqxeFZoMmdrbDB6SzQ/view,所以它没有上面的“红色图标”,但它都是绿色的。 4)现在使用你的浏览器,像往常一样使用xdebug插件,如https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc或Firefox的替代品,因为你不是真的想要使用“自动启动” xdebugconfiguration,如我所想

就是这样

  1. 由于回送设备别名,可移植到其他dev设备
  2. 您不需要configurationdebug-env,而是使用快速debugging,几乎在所有情况下都更方便