我正在使用配置为使用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上工作
答案 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
的硬编码。