PHP xdebug 已加载,但从未连接也从不记录任何内容

PHP xdebug is loaded, but never connects and never logs anything

我正在尝试让 xdebug 从 docker 容器内与 PHPStorm 对话。

我的 .ini 文件目前看起来像这样,但请相信我:今天早上我已经尝试了这些设置的多种组合:

zend_extension=xdebug.so
xdebug.remote.enable=1
xdebug.remote_autostart=1
xdebug.remote_host=10.0.14.79
xdebug.remote_port=2050
xdebug.idekey=mediabank
xdebug.scream=1
xdebug.auto_trace=1
xdebug.trace_output_dir=/tmp/
xdebug.remote_log=/tmp/xdebug.log

这些设置中的每一个我都可以确认它们已设置,具有 php -i |grep <NAME_SETTING_HERE>phpinfo(); 的变体。然而,当我尝试 运行 一个 PHP 脚本时,PHPStorm 像什么都没发生一样坐在那里,而我的 xdebug.log 仍然是空的。没有什么!只是为了确定,我试过了:

echo '' >/tmp/xdebug.log
chmod 777 /tmp/xdebug.log

没有变化。

我已经 运行 浏览了我在这里可以找到的所有内容:https://www.jetbrains.com/help/phpstorm/troubleshooting-php-debugging.html#

作为最后的手段,重启我的主机。没有进展。

有没有人对我有更多的建议?还是 var_dump(); 的痛苦地狱在等着我?

编辑:根据要求添加了示例 cli 文件。

<?php

echo ("Running\n");
xdebug_break();
echo ("Still running\n");
die("I'm done\n");

希望对您有所帮助:

docker-compose.yml

wordpress:
        build: docker/php-fpm
        volumes:
            - .:${PROJECT_FILES}
            - ${DOCKER_DIR}data/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
            - ${DOCKER_DIR}data/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini
        depends_on:
            - db
        environment:
            WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
            WORDPRESS_DB_HOST: db:3306
            WORDPRESS_DB_USER: ${MYSQL_USER}
            WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
        ports:
            - 9000:9000

在xdebug.ini

[xdebug]
error_reporting = E_ALL
display_startup_errors = On
display_errors = On
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9001

检查它是否正常工作。

你实际上没有启用 Xdebug:

xdebug.remote.enable=1

remoteenable之间不应该有.,而应该是_.

以下是我设置 xdebug.ini 的方式(运行时从环境文件注入变量 docker-compose up -d

[xdebug]
xdebug.remote_enable=${PHP_XDEBUG_REMOTE_ENABLE}
xdebug.remote_handler=${PHP_XDEBUG_REMOTE_HANDLER}
xdebug.remote_port=${PHP_XDEBUG_REMOTE_PORT}
xdebug.remote_autostart=${PHP_XDEBUG_REMOTE_AUTOSTART}
xdebug.remote_connect_back=${PHP_XDEBUG_REMOTE_CONNECT_BACK}
xdebug.idekey=${PHP_XDEBUG_IDEKEY}
xdebug.remote_host=${PHP_XDEBUG_REMOTE_HOST}

在 XDebug 服务器触发 PHPStorm 调试会话之前,您必须设置 XDEBUG_SESSION cookie。

查看此处生成小书签:
https://www.jetbrains.com/phpstorm/marklets/

或使用扩展名: