xdebug.profiler_enable_trigger
,允许在通过 HTTP 调用脚本时通过传递 GET 或 POST 参数“XDEBUG_PROFILE”来激活分析。如果您不想对所有脚本进行分析,而只想对少数特殊情况进行分析,而不总是更改 PHP 配置,那么这会很方便。有没有办法为命令行 PHP 程序实现相同的行为?我尝试将
XDEBUG_PROFILE
作为命令行参数传递,但它不起作用。一般来说,分析命令行 PHP 效果很好,但我希望拥有与浏览器和 HTTP 服务器相同的每次调用灵活性。
-d
标志传递 INI 设置:
php -d xdebug.profiler_enable=On script.php
。
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项目配置中的服务器名称
Xdebug远程调试页面所述,还可以通过包含“profile_enable=1”指令的XDEBUG_CONFIG
环境变量来启用分析:
XDEBUG_CONFIG="profiler_enable=1" php ...
为了方便使用,上面的命令行可以写成别名:
alias xphp='XDEBUG_CONFIG="profiler_enable=1" php'
可以将别名添加到 shell 的(交互式)启动脚本之一,例如 ~/.bash_aliases
或
~/.bashrc
(根据您的系统而定)。
需要传入远程启用标志、自动启动标志、ide 标志以及远程主机的名称。
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php
XDEBUG_MODE
环境变量: 可以轻松地为单个脚本启用 Xdebug
XDEBUG_MODE=profile php script_to_be_profiled.php
脚本名称:phpdebug
#!/usr/bin/ksh
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
我将此脚本放在
/usr/bin
中并授予其执行权限。该脚本获取传递到 phpdebug 的参数,并使用 xdebug 参数调用 php,并将传递到 shell 脚本的参数附加到末尾,$* 位于末尾。
php -d xdebug.idekey=PHPSTORM script.php
这甚至适用于调试 laravel artisan 脚本
php -d xdebug.idekey=PHPSTORM artisan db:seed --force
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 问题)。
现在是:
xdebug.mode=profile
因此:
php -d xdebug.mode=profile script.php
-d xdebug.start_with_request=1
:
php -d xdebug.start_with_request=1 script.php