如何为命令行 PHP 脚本触发 XDebug 分析器?
XDebug 提供配置指令 xdebug.profiler_enable_trigger
,允许在通过 HTTP 调用脚本时通过传递 GET 或 POST 参数“XDEBUG_PROFILE”来激活分析。如果您不想对所有脚本进行分析,而只想对少数特殊情况进行分析,而不需要总是更改 PHP 配置,那么这会很方便。
有没有办法为命令行 PHP 程序实现相同的行为?我尝试将 XDEBUG_PROFILE
作为命令行参数传递,但它不起作用。
一般来说,分析命令行 PHP 效果很好,但我希望具有与浏览器和 HTTP 服务器相同的每次调用灵活性。
XDebug offers the configuration directive xdebug.profiler_enable_trigger
that allows to activate profiling by passing the GET or POST parameter "XDEBUG_PROFILE" when calling a script via HTTP. This is handy if you don't want profiling for ALL of your scripts but only for a few special cases without always changing your PHP configuration.
Is there a way to achieve the same behavior for command line PHP programs? I tried to pass the XDEBUG_PROFILE
as a command line argument but it didn't work.
In general, profiling command line PHP works well, but I'd like to have the same per-call-flexibility as with a browser and HTTP server.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
您可以使用
-d
标志传递 INI 设置:php -d xdebug.profiler_enable=On script.php
。You can pass INI settings with the
-d
flag:php -d xdebug.profiler_enable=On script.php
.我通过以下方式在 Ubuntu/Netbeans 上实现了此功能:将
然后,这只是在 netbeans 中开始调试并执行“php”的情况myscript.php”在命令行中。
I got this working on Ubuntu/Netbeans by:
Then it's simply a case of starting debugging in netbeans and doing "php myscript.php" at the command line.
在远程网络服务器上使用 PhpStorm 我使用以下命令:
其中
server_name
代表 PhpStorm 项目配置中服务器的名称with PhpStorm on remote webserver i use this command:
where
server_name
stands for name of the server in PhpStorm project conifuguration如 Xdebug 远程调试页面所述,还可以通过
XDEBUG_CONFIG
通过包含“profile_enable=1”指令来设置环境变量:为了便于使用,可以将上述命令行编写为别名:
可以将别名添加到 shell 的(交互式)启动脚本之一,例如
~/.bash_aliases
或~/.bashrc
(根据您的系统而定)。As described on the Xdebug Remote Debugging page, profiling can also be enabled via the
XDEBUG_CONFIG
environment variable by inluding a "profile_enable=1" directive:For ease of use, the above command line can be written as an alias:
The alias can be added to one of your shell's (interactive) startup scripts, such as
~/.bash_aliases
or~/.bashrc
(as appropriate to your system).在虚拟机上进行开发时使其与 Netbeans 一起使用的过程类似但不同。
需要传入远程启用标志、自动启动标志、ide 标志和远程主机的名称。
Similar, but different process for getting it to work with Netbeans while developing on a VM.
Need to pass in the remote enabled flag, the auto start flag, the ide flag, and the name of your remote host.
对于 Xdebug 3
现在,使用
XDEBUG_MODE
环境可以轻松地为单个脚本启用 Xdebug变量:For Xdebug 3
Now enabling Xdebug for a single script would easily be accomplished using the
XDEBUG_MODE
environment variable:我创建了一个 shell 脚本来处理客户端调试。
脚本名称:phpdebug
我将此脚本放置在
/usr/bin
中并赋予其执行权限。该脚本获取传递到 phpdebug 的参数,并使用 xdebug 参数调用 php,并将传递到 shell 脚本的参数附加到末尾,$* 位于末尾。
I created a shell script to handle client debugging.
script name: phpdebug
I placed this script in
/usr/bin
and gave it execute permissions.The script takes the arguments passed into phpdebug and calls php with the xdebug arguments and appends the arguments passed into the shell script, the $* on the end.
在使用 WAMP 的 PhpStorm 7 中,我通过将已经工作的 xdebug 设置从 C:\wamp\bin\apache\apache2.2.22\bin\php.ini 复制到 C:\wamp\bin\php\ 的 xdebug 部分来实现此功能phpX.YZ\php.ini。然后我像这样运行我的脚本:
这甚至适用于调试 laravel artisan 脚本
In PhpStorm 7 using WAMP I got this to work by copying my already working xdebug settings from C:\wamp\bin\apache\apache2.2.22\bin\php.ini to the xdebug section of C:\wamp\bin\php\phpX.Y.Z\php.ini. Then I ran my script like so:
This even worked for debugging laravel artisan scripts
来自 Jetbrains 的文档
启动脚本使用 PHP 命令行开关进行调试
设置一个环境变量来告诉 XDebug 连接到 IDE:
Windows / MacOS / Linux
这里 idekey 应该有一个随机值。
使用以下命令行选项启动 PHP:
您可以在 Vagrant 中使用 10.0.2.2 而不是 127.0.0.1(请参阅相关的 SO 问题)。
Documentation from Jetbrains
To start the script with debugging using PHP command line switches
Set an environment variable that would tell XDebug to connect to IDE:
Windows / MacOS / Linux
Here idekey should have a random value.
Launch PHP with the following command-line options:
You may use 10.0.2.2 instead of 127.0.0.1 with Vagrant (see related SO question).
我需要将以下内容添加到我的
php.ini
中:https://xdebug .org/docs/step_debug#configure
以及我的
.zshrc
https://xdebug.org/docs/step_debug#activate-debugger-cmd
I needed to add the following to my
php.ini
:https://xdebug.org/docs/step_debug#configure
And the following to my
.zshrc
https://xdebug.org/docs/step_debug#activate-debugger-cmd
欢迎来到 xdebug 3!
现在是:
因此:
Welcome to xdebug 3!
It is now:
therefore: