如何为命令行PHP脚本触发XDebug探查器?

sel*_*oup 189 php configuration command-line profiling xdebug

XDebug提供配置指令"xdebug.profiler_enable_trigger",允许通过在通过HTTP调用脚本时传递GET或POST参数"XDEBUG_PROFILE"来激活分析.如果您不想对所有脚本进行性能分析,但仅针对少数特殊情况而不总是更改PHP配置,则这很方便.

有没有办法实现命令行PHP程序的相同行为?我试图将"XDEBUG_PROFILE"作为命令行参数传递,但它不起作用.

通常,分析命令行PHP运行良好,但我希望具有与浏览器和HTTP服务器相同的每次调用灵活性.

有什么建议?

jou*_*jou 250

您可以使用-d标志传递INI设置:php -d xdebug.profiler_enable=On script.php.

  • 在基于*nix的系统上,您可以通过创建别名来使其更容易使用,例如:`alias phpp ="php -d xdebug.profiler_enable = 1"`.这种方式,当你不想简介只使用`php`和当你使用`phpp`. (37认同)
  • 我必须指定哪个目录我想要保存探测器输出,所以这对我来说:`别名xphp ="php -d xdebug.profiler_enable = On -d xdebug.profiler_output_dir =."`.这始终将调试输出存储在当前工作目录中. (12认同)
  • 在Windows上,您可以在PATH目录中创建一个`phpp.cmd`文件,其中包含`php -d xdebug.profiler_enable = On%*`,然后您只需运行`phpp <args>`. (4认同)
  • 在 Xdebug3 中这仍然有效,该设置被重命名为 `-d xdebug.mode=profile` (3认同)

And*_*cox 43

我通过以下方式在Ubuntu/Netbeans上工作:

  • 将xdebug配置行从/etc/php5/apache2/php.ini文件复制到/etc/php5/cli/php.ini
  • 使用调试会话的名称设置环境变量(您可以从开始调试时页面netbeans启动的URL中的查询字符串中获取此命令)命令为:export XDEBUG_CONFIG ="idekey = netbeans-xdebug"

然后它只是在netbeans中开始调试并在命令行中执行"php myscript.php"的情况.

  • 这是关于调试(单步执行脚本).问题是关于分析(分析脚本的性能,需要很长时间的功能等) (4认同)
  • 注意:完成后,如果您希望保持调试器监听而不是使用PHP命令触发它,则可以使用:"unset XDEBUG_CONFIG". (2认同)

oli*_*adj 32

使用远程网络服务器上的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
Run Code Online (Sandbox Code Playgroud)

其中server_name代表PhpStorm项目conifuguration中服务器的名称

  • 我把它添加到.bash_aliases`别名xphp ="XDEBUG_CONFIG ="idekey = PHPSTORM"PHP_IDE_CONFIG ="serverName = example.com"php -d memory_limit = 1G -d xdebug.remote_host =`echo $ SSH_CLIENT | cut -d \"= \"-f 2 | awk'{print $ 1}'```所以当我想调试时我使用xphp而不是php (5认同)

out*_*tis 14

Xdebug远程调试页面所述,也可以通过XDEBUG_CONFIG包含"profile_enable = 1"指令通过环境变量启用性能分析:

XDEBUG_CONFIG="profiler_enable=1" php ...
Run Code Online (Sandbox Code Playgroud)


Jos*_*nce 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
Run Code Online (Sandbox Code Playgroud)


yiv*_*ivi 5

对于 Xdebug 3

XDEBUG_MODE 现在,使用环境变量可以轻松地为单个脚本启用 Xdebug :

XDEBUG_MODE=profile php script_to_be_profiled.php
Run Code Online (Sandbox Code Playgroud)