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
remote
和enable
之间不应该有.
,而应该是_
.
以下是我设置 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/
或使用扩展名:
我正在尝试让 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
remote
和enable
之间不应该有.
,而应该是_
.
以下是我设置 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/
或使用扩展名: