使用PhpStorm和Xdebug在Docker中调试Symfony2

我正在按照以下教程尝试使用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

Docker文件

# 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”
>使用此配置https://gist.github.com/EugenMayer/3019516e5a3b3a01b6eac88190327e7c
a)为您的OSX本地主机回送设备创建别名
b)将FPM xdebug配置为connect_back到此ip
>现在,非常简单,只需按下该按钮https://drive.google.com/file/d/0B3SrxyqujSqxeFZoMmdrbDB6SzQ/view,使其上方没有该“红色图标”,而是全绿色.
4)现在,使用浏览器,像往常一样使用xdebug插件,如https://chrome.google.com/webstore/detail/xdebug-helper/eadndfjplgieldjbigjakmdgkmoaaaoc或Firefox替代品,因为我真的不希望在xdebug配置中使用“自动启动”

就是这样

>由于环回设备别名,可移植到其他开发设备
>您无需配置debug-env,而是使用quick-debug,这几乎在所有情况下都更加方便

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...