2016-08-23 65 views
3

我想按照这个教程调试与PhpStorm一个Symfony的应用程序: https://gist.github.com/chadrien/c90927ec2d160ffea9c4调试Symfony2的在泊坞窗与PhpStorm和Xdebug

我做了完全一样的,但它不能很好地工作。

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主页在这里。 但它不停止在我的断点上。并且逐步调试不起作用。

我做错了什么?

+0

截图,请(即“弹出”窗口;你的“PHP |服务器”等)。到目前为止,它听起来像错误的路径映射... – LazyOne

+0

您使用的是什么码头机解决方案?基于像dockertoolbox或docker-for-mac的虚拟机?这是最关键的一点。另外,暴露9000:9000根本没有意义 –

+0

@EugenMayer我使用docker for mac。我正在公开9000,因为我在'nginx'中使用'php-fpm' – Kevin

回答

3

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

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

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

你想要做什么是

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

这就是它,它

    由于回送设备别名
  1. 移植到其他开发设备
  2. 你不需要配置调试ENV,而是使用快速调试是,几乎在所有的情况下,更方便
0

另一个答案是正确的,你必须删除端口部分的- 9000:9000

另一个问题是您的码头容器需要知道码头主机的IP地址。这是正确的端口9000连接到。

自2017年6月发布docker 17.06以来,您可以在运行docker容器中使用docker.for.mac.localhost DNS条目。

你可以添加另一回声线,以用于安装Xdebug的运行声明:

&& echo "xdebug.remote_host=docker.for.mac.localhost" >> /usr/local/etc/php/conf.d/xdebug.ini \