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

发布于 2024-09-03 10:50:42 字数 365 浏览 6 评论 0原文

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

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

I have managed to initiate php-cli script debug session from the IDE itself, but I need to start the debugging session from the shell / command line. These are rather complex maintenance PHP scripts which take a lot of input parameters, so entering arguments from within Netbeans is a bit cumbersome.

I have done it before with Zend studio: https://zend18.zendesk.com/hc/en-us/articles/203838096-Debugging-PHP-CLI-Scripts, but now I need to get it working with Netbeans.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

爱的那么颓废 2024-09-10 10:50:42

我通过以下方式在 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 进行远程调试,则需要在从命令行运行的文件上使用“调试文件”,而不是普通的“调试”。

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) so 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.

Note:
If you want to debug remotely using netbeans you need to use Debug File on the file that is being run from the command line, not normal Debug.

魄砕の薆 2024-09-10 10:50:42

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

请参阅http://xdebug.org/docs/remote

Add xdebug.remote_autostart=On to your php.ini file or add -dxdebug.remote_autostart=On as parameter to the PHP binary call (php -d... script.php).

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

妳是的陽光 2024-09-10 10:50:42

我将把所有的放在一起,以下是对我有用的。

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

I will put all together, the following is that works for me.

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

then, without any other parameter

php script.php

2024-09-10 10:50:42

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

  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. 跟随调试...

I had the same problem, my solution was this:

  1. Environment: Netbeans 8.2 under windows (apache+php)
  2. Assuming you already have PHP and NetBeans configured to debug
    code using Xdebug (http://wiki.netbeans.org/HowToConfigureXDebug#Notes_on_Windows_Configuration)
  3. On netbeans create new Configuration (“Project Properties” > “Run configuration” > “New…”
  4. In the new Configuration set Do Not Open web Browser (“Advanced” > “Do Not Open web Browser”)
  5. Set active the new configuration created (drop down in tool bar)
  6. Set breakpoint for debug
  7. Open debug (CTRL+F5)
  8. Open Terminal window (“Tools” > “Open in Terminal”)
  9. Type in terminal: $ export XDEBUG_CONFIG="idekey=netbeans-xdebug" (the value "netbeans-xdebug" must coincide with “Tools” > “Options” > “Debugging” > “Session ID”)
  10. Type in terminal: $ php.exe -f "C:\Apache24\htdocs\www.SiteName\ScriptName.php" -- "Arg1=x&Arg2=y"
  11. Follow debug…
瘫痪情歌 2024-09-10 10:50:42

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

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

填写正确的值:

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

I had the same problem my solution was this:

In Netbeans > the project window > right click on the php project > properties > Run configuration.
Create a New Configuration.

Fill the correct values:

  • Run as "script"
  • set php interpreter
  • change index file in my case it was "cron/index.php".
爱她像谁 2024-09-10 10:50:42

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

https://github.com/tacnoman/dephpugger

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

You can use the Dephpugger project if you dont want to configure xDebug for your IDE (i hate configurations).

https://github.com/tacnoman/dephpugger

You can run the debugger in terminal, like ipdb for Python and byebug for Ruby.

一袭白衣梦中忆 2024-09-10 10:50:42

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

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

Make sure you also setup DBGP_IDEKEY value, because usually it is not idekey.
For example on Linux:

export DBGP_IDEKEY="netbeans-xdebug" 
export XDEBUG_CONFIG="netbeans-xdebug=netbeans-xdebug"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文