使用xdebug和netbeans调试php-cli脚本?


72

我已经设法从IDE本身启动php-cli脚本调试会话,但是我需要从shell /命令行启动调试会话。这些是相当复杂的维护PHP脚本,需要大量输入参数,因此从Netbeans中输入参数有点麻烦。

我之前在Zend studio上已经做到了:https : //zend18.zendesk.com/hc/en-us/articles/203838096-Debugging-PHP-CLI-Scripts,但是现在我需要使其与Netbeans一起使用。

提前致谢。

Answers:


111

我通过以下方法在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在命令行中进行操作的一种情况。

注意:如果要使用netbeans进行远程调试,则需要在从命令行运行的文件上使用Debug File,而不是正常的Debug。


2
为此+1,谢谢@AndrewHancox。对于调试控制台应用程序,我还发现在项目“属性”→“运行配置”→“高级...”中设置“不打开Web浏览器”很有帮助
Adam Monsen

14
在Windows中,您必须使用SET XDEBUG_CONFIG=idekey=xdebug(请注意缺少引号!)
鱼骨2012年

对我不起作用,我正在使用Ubuntu 12.04 LTS和Netbeans 7.3。能给我个提示吗?使用gui的作品,但没有控制台。我对apache2和cli文件夹中的xdebug设置有一个conf.d。我也导出了变量。
GarouDan

1
GarouDan-在命令提示符下使用“ php -i | grep php.ini”检查您是否已编辑正确的文件,并使用“ php -i | grep debug”检查其中是否有调试设置。未能检查idekey尚未更改。
Andrew Hancox

1
我试着放进export XDEBUG_CONFIG="idekey=netbeans-xdebug"/etc/php5/cli/php.ini,但是由于它很奇怪并且什么都没用,所以我用谷歌搜索了“ Ubuntu export ”,并了解到它应该在运行php脚本之前先运行。对我来说,这并不明显。
iVenGO 2014年

44

添加xdebug.remote_autostart=On到您的php.ini文件中或-dxdebug.remote_autostart=On作为参数添加到PHP二进制调用(php -d... script.php)。

参见http://xdebug.org/docs/remote


3
我在Windows上为自己的IDE使用Windows上的PHPStorm,并且基于johannes回答,我这样调用php脚本codephp -dxdebug.remote_autostart = On -didekey = PHPSTORM -dremote_host = localhost -dprofiler_enable = 1 MY_PHP_PAGE.php PARAM1 PARAM2code
Coenie Richards

3
@Coenie理查兹应该是:PHP -dxdebug.remote_autostart =在-dxdebug.idekey = PHPSTORM -dxdebug.remote_host =本地主机MY_PHP_PAGE.php PARAM1 PARAM2
蒂姆

16

我将全部放在一起,以下是对我有用的。

file:
/etc/php5/cli/php.ini

zend_extension="/usr/lib/php5/20121212/xdebug.so" -> xdebug bin path
xdebug.remote_enable=on
xdebug.remote_host=127.0.0.1
xdebug.remote_handler="dbgp"
xdebug.remote_mode="req"
xdebug.remote_port=9000 -> same port configured in netbeans debugging tab
xdebug.idekey="netbeans-xdebug" -> same ide configured in netbeans debuggin tab
xdebug.remote_autostart=1

然后,没有任何其他参数

php脚本.php


2

我有同样的问题,我的解决方案是这样的:

  1. 环境:Windows下的Netbeans 8.2(apache + php)
  2. 假设您已经将PHP和NetBeans配置为使用Xdebug调试代码(http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration
  3. 在netbeans上创建新的配置(“项目属性”>“运行配置”>“新建...”
  4. 在新的配置集中,不要打开Web浏览器(“高级”>“不要打开Web浏览器”)
  5. 激活新创建的配置(在工具栏中下拉)
  6. 设置调试点
  7. 打开调试(CTRL + F5)
  8. 打开终端窗口(“工具”>“在终端中打开”)
  9. 键入终端:$ export XDEBUG_CONFIG =“ idekey = netbeans-xdebug”(值“ netbeans-xdebug”必须与“工具”>“选项”>“调试”>“会话ID”一致)
  10. 输入终端:$ php.exe -f“ C:\ Apache24 \ htdocs \ www.SiteName \ ScriptName.php”-“ Arg1 = x&Arg2 = y”
  11. 跟随调试…

0

我有同样的问题,我的解决方案是这样的:

在Netbeans>项目窗口中>右键单击php项目>属性>运行配置。创建一个新配置。

填写正确的值:

  • 以“脚本”运行
  • 设置PHP解释器
  • 在我的情况下,更改索引文件为“ cron / index.php”。


0

确保还设置了DBGP_IDEKEY值,因为通常它不是idekey。例如在Linux上:

export DBGP_IDEKEY="netbeans-xdebug" 
export XDEBUG_CONFIG="netbeans-xdebug=netbeans-xdebug"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.