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

0x6upsns  于 2022-12-29  发布在  PHP
关注(0)|答案(7)|浏览(147)

我已经设法从IDE本身启动了php-cli脚本调试会话,但我需要从shell /命令行启动调试会话。这些是相当复杂的维护PHP脚本,需要大量的输入参数,因此从Netbeans内部输入参数有点麻烦。
我以前在Zend工作室做过:https://zend18.zendesk.com/hc/en-us/articles/203838096-Debugging-PHP-CLI-Scripts,但现在我需要让它与Netbeans一起工作。

gojuced7

gojuced71#

我在Ubuntu/Netbeans上通过以下方式实现了这个功能:

  • 将xdebug配置行从/etc/php5/apache 2/php. ini文件复制到/etc/php5/cli/php. ini
  • 使用调试会话的名称设置一个环境变量(当您开始调试时,可以从netbeans启动的页面的url中的查询字符串获取此名称),因此命令为:第一个月

然后,它只是一个在netbeans中开始调试并在命令行中执行php myscript.php的简单例子。
注:如果要使用netbeans进行远程调试,则需要对从命令行运行的文件使用调试文件,而不是普通的调试。

hxzsmxv2

hxzsmxv22#

xdebug.remote_autostart=On添加到php.ini文件或将-dxdebug.remote_autostart=On作为参数添加到PHP二进制调用(php -d... script.php)。
参见http://xdebug.org/docs/remote

wa7juj8i

wa7juj8i3#

我会把所有的放在一起,以下是为我工作。

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脚本

whitzsjs

whitzsjs4#

我遇到了同样的问题,我的解决方案是:
1.环境:Windows下的Netbeans 8.2(Apache + PHP)
1.假设您已经将PHP和NetBeans配置为使用Xdebug调试代码(http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration)
1.在netbeans上创建新配置("项目属性"〉"运行配置"〉"新建..."
1.在新配置中设置"不打开Web浏览器"("高级"〉"不打开Web浏览器")
1.激活创建的新配置(工具栏中的下拉菜单)
1.设置调试断点
1.打开调试(CTRL + F5)
1.打开终端窗口("工具"〉"在终端中打开")
1.输入端子:$export XDEBUG_CONFIG ="idekey = netbeans-xdebug"(值"netbeans-xdebug"必须与"工具"〉"选项"〉"调试"〉"会话ID"一致)
1.输入端子:$php.exe-f "C:\Apache 24\htdocs\网站名称\脚本名称. php"--"参数1 = x和参数2 = y"
1.遵循调试...

sy5wg1nm

sy5wg1nm5#

我遇到了同样的问题我的解决方案是这样的:
在NetBeans〉项目窗口〉右键单击php项目〉属性〉运行配置。创建一个新配置。
填写正确的值:

  • 作为“脚本”运行
  • 设置php解释器
  • 改变索引文件在我的情况下,它是“cron/index.php”.
am46iovg

am46iovg6#

如果您不想为IDE配置xDebug(我讨厌配置),可以使用Dephpugger项目。
https://github.com/tacnoman/dephpugger
您可以在终端中运行调试器,如Python的ipdb和Ruby的byebug。

aemubtdh

aemubtdh7#

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

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

相关问题