使用PhpStorm和Xdebug在Docker中调试Symfony2

前端之家收集整理的这篇文章主要介绍了使用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相关文章