XDebug提供配置指令“xdebug.profiler_enable_trigger”,允许通过在通过HTTP调用脚本时传递GET或POST参数“XDEBUG_PROFILE”来激活分析。如果您不希望对所有脚本进行性能分析,但仅针对少数特殊情况而不总是更改PHP配置,这很方便。
有没有办法为命令行PHP程序实现相同的行为?我试图将“XDEBUG_PROFILE”作为命令行参数传递,但它不起作用。
通常,分析命令行PHP运行良好,但我希望具有与浏览器和HTTP服务器相同的每次调用灵活性。
有什么建议吗?
答案 0 :(得分:242)
您可以使用-d
标记传递INI设置:php -d xdebug.profiler_enable=On script.php
。
答案 1 :(得分:43)
我通过以下方式使用Ubuntu / Netbeans:
然后它只是在netbeans中开始调试并在命令行执行“php myscript.php”的情况。
答案 2 :(得分:31)
在远程网络服务器上使用PhpStorm我使用此命令:
XDEBUG_CONFIG="idekey=PHPSTORM" PHP_IDE_CONFIG="serverName=server_name" php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` myscript.php
其中server_name
代表PhpStorm项目conifuguration中服务器的名称
答案 3 :(得分:13)
如Xdebug Remote Debugging页面所述,也可以通过XDEBUG_CONFIG
环境变量启用性能分析,方法是加入“profile_enable = 1”指令:
XDEBUG_CONFIG="profiler_enable=1" php ...
答案 4 :(得分:11)
在VM上进行开发时,使用Netbeans的过程类似但不同的过程。
需要传入远程启用标志,自动启动标志,ide标志和远程主机的名称。
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php
答案 5 :(得分:3)
我创建了一个shell脚本来处理客户端调试。
脚本名称:phpdebug
#!/usr/bin/ksh
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
我将此脚本放在/usr/bin
中,并赋予其执行权限。
脚本接受传递给phpdebug的参数,并使用xdebug参数调用php,并将传递给shell脚本的参数追加到最后的$ *。
答案 6 :(得分:2)
在PhpStorm 7中使用WAMP我通过将我已经工作的xdebug设置从C:\ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini复制到C:\ wamp \ bin的xdebug部分来实现这一点\ PHP \ phpX.YZ \ php.ini中。然后我像这样运行我的脚本:
php -d xdebug.idekey=PHPSTORM script.php
这甚至适用于调试laravel工匠脚本
php -d xdebug.idekey=PHPSTORM artisan db:seed --force
答案 7 :(得分:1)
要使用PHP命令行开关进行调试来启动脚本 设置一个环境变量,该变量将告诉XDebug连接到IDE:
Windows / MacOS / Linux
export XDEBUG_CONFIG="idekey=123"
此处idekey应该具有随机值。
使用以下命令行选项启动PHP:
php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php
您可以在Vagrant中使用10.0.2.2而不是127.0.0.1(请参阅相关的SO问题)。
答案 8 :(得分:1)
现在使用 XDEBUG_MODE
environment variable 可以轻松地为单个脚本启用 Xdebug:
XDEBUG_MODE=profile php script_to_be_profiled.php
答案 9 :(得分:0)
欢迎使用 xdebug 3!
现在是:
xdebug.mode=profile
因此:
php -d xdebug.mode=profile script.php