使用PhpStorm和Xdebug在Docker中调试Symfony2

问题描述 投票:3回答:2

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

我做错什么了吗?

symfony docker phpstorm xdebug
2个回答
3
投票

使用docker-for-mac公开9000是错误的 - 你的方向错了。

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

另一方面,xdebug连接,附加到通常是localhost的端口9000 - 如果它找到了一个监听器,它们会说话。这个,因为在9000上没有服务,转发端口不仅没有意义,它实际上甚至会伤害你,因为端口9000将被带到OSX主机localhost上,你的PHPstorm将无法再监听它。

你想做的是

  1. 删除'9000:9000'
  2. 使用此配置https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c a)为您的OSX localhost环回设备创建别名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配置中使用“autostart”,正如我想的那样

多数民众赞成就是这样

  1. 由于环回设备别名,可移植到其他开发设备
  2. 你不需要配置debug-env,而是使用快速调试,这几乎在所有情况下都更方便

0
投票

另一个答案是正确的,您必须删除端口部分中的- 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 \

© www.soinside.com 2019 - 2024. All rights reserved.