【问题标题】:XDebug. Docker. Can't disable an autostartX调试。码头工人。无法禁用自动启动
【发布时间】:2017-10-31 11:31:19
【问题描述】:

我正在通过docker-compose 命令使用Docker。我希望能够在调试模式和正常模式下运行我的应用程序,但现在调试器仍然启动。

我有这样一个app.docker 文件。

FROM php:7-fpm

RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
    && docker-php-ext-install mcrypt pdo_mysql

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=1" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.remote_autostart=0" >> /usr/local/etc/php/conf.d/xdebug.ini \
    && echo "xdebug.idekey=PHPSTORM" >> /usr/local/etc/php/conf.d/xdebug.ini

WORKDIR /var/www

如果我点击“运行”

调试会话仍然开始

我希望能够运行和调试我的测试(以及应用程序的其余部分)。我错过了一些明显的东西吗?

【问题讨论】:

  • 在运行菜单“开始监听调试连接”和“在 PHP 脚本的第一行中断”
  • @lumos0815 嗯...但不是从第一行开始)
  • 如果您单击“停止侦听调试连接”,phpstorm 不接受调试连接。为了避免 php 启动它们,您可以通过 docker 中的 env 变量设置 xdebug 设置,例如docker run -e XDEBUG_CONFIG="idekey=PHPSTORM" -e PHP_IDE_CONFIG="serverName=docker-phpunit"
  • 我想阻止php 启动它们。抱歉,我有那个设置。请再次检查我的app.docker 文件,您将看到idekey 配置。在我的docker-compose.yml 我有PHP_IDE_CONFIG: serverName=<my-server-name>
  • @lumos0815 我知道如何启动 XDebug。问题是我无法停止 php 启动 XDebug 会话

标签: php docker docker-compose phpstorm xdebug


【解决方案1】:

这是一个意外的 xdebug 远程主机行为。

我已经通过停止使用环境变量来修复它。

在我的docker-compose.yml

app:
        ...
        environment:
            ...
            # removed the line below
            XDEBUG_CONFIG: remote_host=docker.for.mac.localhost
       ...

并将其添加到 docker 文件中。类似的东西

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

可以在blog post 阅读有关它的更多信息。它的创建者为我的解决方案提供了一个想法,我们已经更新了这篇文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    • 2020-11-29
    • 2020-01-15
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    相关资源
    最近更新 更多