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

Posted

技术标签:

【中文标题】使用 xdebug 和 netbeans 调试 php-cli 脚本?【英文标题】:Debugging php-cli scripts with xdebug and netbeans? 【发布时间】:2011-02-26 01:21:36 【问题描述】:

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

我之前在 Zend studio 中做过:https://zend18.zendesk.com/hc/en-us/articles/203838096-Debugging-PHP-CLI-Scripts,但现在我需要让它与 Netbeans 一起工作。

提前致谢。

【问题讨论】:

【参考方案1】:

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

export DBGP_IDEKEY="netbeans-xdebug" 
export XDEBUG_CONFIG="netbeans-xdebug=netbeans-xdebug"

【讨论】:

【参考方案2】:

我遇到了同样的问题,我的解决办法是这样的:

    环境:windows下Netbeans 8.2 (apache+php) 假设您已经将 PHP 和 NetBeans 配置为调试 代码使用 Xdebug (http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration) 在 netbeans 上创建新配置(“项目属性”>“运行配置”>“新建...” 在新的配置集中不要打开网页浏览器(“高级”>“不要打开网页浏览器”) 将创建的新配置设置为活动状态(工具栏中的下拉菜单) 设置断点进行调试 打开调试 (CTRL+F5) 打开终端窗口(“工具”>“在终端中打开”) 在终端输入:$ export XDEBUG_CONFIG="idekey=netbeans-xdebug"(值“netbeans-xdebug”必须与“工具”>“选项”>“调试”>“会话ID”一致) 在终端输入:$ php.exe -f "C:\Apache24\htdocs\www.SiteName\ScriptName.php" -- "Arg1=x&Arg2=y" 按照调试...

【讨论】:

【参考方案3】:

如果您不想为您的 IDE 配置 xDebug(我讨厌配置),您可以使用 Dephpugger 项目。

https://github.com/tacnoman/dephpugger

您可以在终端中运行调试器,例如用于 Python 的 ipdb 和用于 Ruby 的 byebug。

【讨论】:

【参考方案4】:

我遇到了同样的问题,我的解决方案是这样的:

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

填写正确的值:

作为“脚本”运行 设置php解释器 在我的例子中更改索引文件是“cron/index.php”。

【讨论】:

【参考方案5】:

我会把所有东西放在一起,以下是适合我的。

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 script.php

【讨论】:

【参考方案6】:

我通过以下方式在 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。

【讨论】:

对此+1,谢谢@AndrewHancox。对于调试控制台应用程序,我还发现在项目属性 → 运行配置 → 高级...中设置“不打开 Web 浏览器”很有帮助... 在windows中你必须使用SET XDEBUG_CONFIG=idekey=xdebug(注意缺少引号!) 对我不起作用,我使用的是 Ubuntu 12.04 LTS 和 Netbeans 7.3。我能给我一个线索吗?使用 gui 有效,但没有控制台。我在 apache2 和 cli 文件夹上有一个带有 xdebug 设置的 conf.d。我也导出了变量。 GarouDan - 在命令提示符下使用“php -i | grep php.ini”检查您是否编辑了正确的文件,并使用“php -i | grep debug”检查您是否获得了调试设置在那里。未能检查 idekey 没有改变。 我尝试将export XDEBUG_CONFIG="idekey=netbeans-xdebug" 设置为/etc/php5/cli/php.ini,但由于它很奇怪而且没有任何效果,所以我搜索了“Ubuntu export”并了解到它应该在运行 php 之前在终端中运行脚本。对我来说这并不明显。【参考方案7】:

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

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

【讨论】:

我在 Windows 上将 PHPStorm 用于我的 IDE,并根据 johannes 的回答,我从 code php -dxdebug.remote_autostart=On -didekey=PHPSTORM -dremote_host=localhost -dprofiler_enable= 中调用我的 php 脚本1 MY_PHP_PAGE.php PARAM1 PARAM2 code @Coenie Richards 应该是:php -dxdebug.remote_autostart=On -dxdebug.idekey=PHPSTORM -dxdebug.remote_host=localhost MY_PHP_PAGE.php PARAM1 PARAM2

以上是关于使用 xdebug 和 netbeans 调试 php-cli 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

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

使用 xdebug 和 netbeans 调试 CakePHP 2.4 应用程序不起作用

在 Netbeans 中使用 XDebug 调试 PHP

netbeans工具使用xdebug断点调试php源码

无法通过 netbeans 和 xdebug 调试内部页面

NetBeans配置Xdebug 远程调试PHP