使用 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 脚本?