如何触发命令行PHP脚本的XDebug分析器?
XDebug提供configuration指令“xdebug.profiler_enable_trigger”,当通过HTTP调用脚本时,允许通过传递GET或POST参数“XDEBUG_PROFILE”来激活分析。 如果您不想为所有脚本进行性能分析,而只是针对一些特殊情况,而无需始终更改PHPconfiguration,则此function十分方便。
有没有办法实现命令行PHP程序相同的行为? 我尝试通过“XDEBUG_PROFILE”作为命令行参数,但它没有工作。
一般来说,分析命令行PHP运行良好,但我希望具有与浏览器和HTTP服务器相同的每个调用灵活性。
有什么build议么?
您可以使用-d
标志传递INI设置: php -d xdebug.profiler_enable=On script.php
。
我通过以下途径在Ubuntu / Netbeans上工作:
- 将/etc/php5/apache2/php.ini文件中的xdebugconfiguration行复制到/etc/php5/cli/php.ini
- 使用debugging会话的名称设置一个环境variables(你可以从开始debugging时netbeans启动页面的url中的查询string中获取)命令是:export XDEBUG_CONFIG =“idekey = netbeans-xdebug”
那么这只是一个在netbeans中开始debugging并在命令行执行“php myscript.php”的情况。
与远程web服务器上的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项目configuration中服务器的名称
如Xdebug远程debugging页面所述,还可以通过包含“profile_enable = 1”指令的XDEBUG_CONFIG
环境variables启用概要分析:
XDEBUG_CONFIG="profiler_enable=1" php ...
在虚拟机上开发时,使用Netbeans的过程与此类似,但却有所不同。
需要传入远程启用标志,自动启动标志,ide标志和远程主机的名称。
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php
我创build了一个shell脚本来处理客户端debugging。
脚本名称:phpdebug
#!/usr/bin/ksh php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
我把这个脚本放在/usr/bin
并赋予它执行权限。
该脚本将parameter passing到phpdebug中,并使用xdebug参数调用php,并将传递给shell脚本的参数追加到$ *的末尾。
在使用WAMP的PhpStorm 7中,我通过将已经工作的xdebug设置从C:\ wamp \ bin \ apache \ apache2.2.22 \ bin \ php.ini复制到C:\ wamp \ bin \ php \ phpX.YZ \ php.ini中。 然后我这样跑我的脚本:
php -d xdebug.idekey=PHPSTORM script.php
这甚至用于debugginglaravel artisan脚本
php -d xdebug.idekey=PHPSTORM artisan db:seed --force