可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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.
Any suggestions?
回答1:
You can pass INI settings with the -d
flag: php -d xdebug.profiler_enable=On script.php
.
回答2:
I got this working on Ubuntu/Netbeans by:
- copying the xdebug config lines from the /etc/php5/apache2/php.ini file into /etc/php5/cli/php.ini
- setting an environment variable with the name of the debug session (you can get this from the query string in the url of the page netbeans launches when you start debugging) the command is: export XDEBUG_CONFIG="idekey=netbeans-xdebug"
Then it's simply a case of starting debugging in netbeans and doing "php myscript.php" at the command line.
回答3:
with PhpStorm on remote webserver i use this command:
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
where server_name
stands for name of the server in PhpStorm project conifuguration
回答4:
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:
XDEBUG_CONFIG="profiler_enable=1" php ...
回答5:
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.
php -dxdebug.remote_enable=1 -dxdebug.remote_autostart=On -dxdebug.idekey=netbeans-xdebug -dxdebug.remote_host=NAME.OF.HOST script.php
回答6:
I created a shell script to handle client debugging.
script name: phpdebug
#!/usr/bin/ksh
php -dxdebug.remote_host=`echo $SSH_CLIENT | cut -d "=" -f 2 | awk '{print $1}'` $*
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.
回答7:
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:
php -d xdebug.idekey=PHPSTORM script.php
This even worked for debugging laravel artisan scripts
php -d xdebug.idekey=PHPSTORM artisan db:seed --force