尝试使用xdebug在cli上调试phpunit单元测试失败

时间:2013-06-14 17:03:09

标签: php debugging phpunit xdebug phpstorm

我正在使用配置为使用xDebug的PHPStorm(我可以通过网络浏览器调试就好了)

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

所以我通过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只是我的用户名。

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

4 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

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

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

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

另外值得注意的是:

  

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

答案 2 :(得分:0)

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

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

替换idekey = ??在你的例子中到11854。 请务必启动新的控制台会话,以便使用变量。

答案 3 :(得分:0)

我在这里尝试一种非常不同的设置。我在dockers中运行我的应用程序,我有一个非常类似于在生产中运行的容器的容器。因此,要在我的开发环境中使用xdebug运行php,我必须使用xdebug params和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的硬编码。