7

我正在使用配置为使用 xDebug 的 PHPStorm(我可以通过 Web 浏览器进行调试)

我在 idekey 为 11854 的 PHPStorm 中运行调试器,我正在尝试调试单元测试,并且我已经正确设置了断点

所以我通过cli执行了这个命令:

phpunit -d xdebug.profiler_enable=on -d xdebug.idekey=11854 --filter testFunction s_function/sFunctionTest.php

尽管如此,它不会相应地在断点处进行调试......

当我尝试在测试脚本中执行此操作时:

error_log(ini_get('xdebug.profiler_enable'));
error_log(ini_get('xdebug.idekey'));

它会显示 xdebug.profiler_enable 为 0 而 xdebug.idekey 只是我的用户名。

我做错了什么以及如何让 xdebug 通过 cli 在 phpunit 上工作

4

4 回答 4

7

您只是将参数设置为 phpunit,而不是 PHP。以下应该做你想要的:

php -d xdebug.profiler_enable=on -d xdebug.idekey=11854 `which phpunit` --filter testFunction s_function/sFunctionTest.php
于 2013-06-22T12:36:06.600 回答
2

xdebug 文档提供了一个看起来更简单的解决方案......

export XDEBUG_CONFIG="idekey=session_name"
php myscript.php

设置该变量后,您可以正常从命令行运行脚本(对于该 SSH 会话),PHP 将使用此配置。

另外值得注意的是:

您也可以在同一个环境变量中配置 xdebug.remote_host、xdebug.remote_port、xdebug.remote_mode 和 xdebug.remote_handler,只要用空格分隔这些值

于 2014-09-25T21:11:31.237 回答
0

在 Ubuntu 中调试 CLI 我发现让它工作的唯一方法是将以下内容添加到您的 ~/.bashrc 文件中

export PHP_IDE_CONFIG='serverName=localhost'
export XDEBUG_CONFIG='idekey=PHPSTORM'

替换 idekey=?? 在您的示例中为 11854。请务必启动一个新的控制台会话,以便使用 var。

于 2014-10-07T07:00:00.530 回答
0

我在这里尝试一个非常不同的设置。我在 docker 中运行我的应用程序,并且我有一个与在生产环境中运行的容器非常相似的容器。因此,要在我的开发环境中使用 xdebug 运行 php,我必须使用 xdebug 参数和 PHPStorm 变量设置别名。

$ alias php=`which php`' \
    -d xdebug.idekey=xdbg \
    -d xdebug.remote_enable=1 \
    -d xdebug.remote_connect_back=1 \
    -d xdebug.remote_autostart=1 \
    -d xdebug.remote_port=9000 \
    -d xdebug.remote_host=172.17.0.1 \
    -d xdebug.remote_handler=dbgp'

$ export PHP_IDE_CONFIG="serverName=localapp.docker"

在这个不漂亮的技巧之后,我可以在 PHPStorm 上设置断点并从命令行运行 phpunit。

$ php ../../bin/phpunit --verbose

上面的所有命令都在容器内运行。这localapp.docker是我的容器的地址,是/etc/hosts主机的硬编码。

于 2016-11-17T10:32:49.563 回答