【问题标题】:XDebug with Mamp doesn't work in NetBeans带有 Mamp 的 XDebug 在 NetBeans 中不起作用
【发布时间】:2011-12-09 16:02:09
【问题描述】:

我在 PhpStorm 和 Mamp 中成功使用了 XDebug,但现在我想尝试在项目中使用 NetBeans。但我无法让 NetBeans 连接到 XDebug。它只是等到我停止调试器,然后我收到一条消息说 NetBeans 从未连接到 XDebug,它要求我检查 php.ini 中的设置。

现在,正如我所说,它在 PhpStorm 上运行良好,所以我认为 php.ini 中的设置应该没有什么问题,但无论如何,它们在这里:

[xdebug]
zend_extension="/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp 
xdebug.remote_mode=req
xdebug.remote_host=localhost
xdebug.remote_port=9000  

我觉得奇怪的一件事是,每个人都在谈论 php.ini 位于 /Applications/Mamp/conf 中,但在那个文件夹中,至少我的设置中没有 php.ini。另一方面,在 /Applications/Mamp/bin/php/php5.3.6/conf 中有。所以这是我修改的那个。而且由于它在 PhpStorm 中有效,我认为它一定是正确的......

但是,为什么 NetBeans 不能连接?我还使用 Safari 的 XDebug 插件将其连接到浏览器中。 NetBeans 中的端口设置为 9000,如 php.ini 文件中所示。

我使用的是 NetBeans 7.0.1 和 php5.3.6。

我还有什么遗漏的吗?

编辑:

好吧,我发现了为什么 XDebug 仍然无法连接的问题:我正在使用 XDebug 的 Safari 插件,显然它有自己的 IDE Key 设置,设置为 1,而 NetBeans 有 netbeans- xdebug 集。一旦我在加载项中将其更改为后者,我就建立了连接。问题是我仍然遇到某种错误。它说:我打调试器时找不到404页面,地址字段中的地址是:http://localhost/app_netbeans/index.php?XDEBUG_SESSION_START=netbeans-xdebug

知道这里发生了什么吗?

顺便说一句,只需在 NetBeans 中点击运行即可正常工作并打开 http://localhost/app_netbeans(我已使用 mod_rewrite 删除 CodeIgniter 中 url 的 index.php 部分)

编辑 2: 我发现地址的index.php部分是因为在NetBeans的运行配置中有一个“索引文件”设置默认设置为index.php。如果我删除它以使 CodeIgniter “控制器” url 没有 index.php,我得到了正确的 url,但在它之后附加了 xdebu 的东西。但是当我使用调试器命令时仍然找不到 404 页面,但当我使用运行命令时却没有。

奇怪的是,我可以做的是我可以点击调试,忽略它进入 404 页面未找到的事实,然后返回 IDE,点击运行,如果我设置了断点,它将在那个断点处停止.

但同样,这并不是我认为正常的调试行为......所以如果有人知道发生了什么,我很想听听......

【问题讨论】:

  • 没有评论的vodedown...?那是怎么回事?如果我的问题有问题,我不介意vodedowns,但请说出问题所在,不管是谁做的。

标签: php netbeans mamp xdebug


【解决方案1】:

使用下面的代码..

zend_extension="path to the xdebug.so"
;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;
[xdebug]
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000

还要确保 netbeans 中的端口是正确的。你可以检查一下

  1. 转到工具菜单并选择选项
  2. 在options中点击php查看端口号。

【讨论】:

  • 没用...我已经尝试了所有我能找到的组合,包括在 xdebug.remote_enable=1、xdebug.remote_enable=on 等上找到的变体...但是我确实发现设置对话框中没有设置php解释器。奇怪地运行项目(没有调试)仍然有效。但我现在确实将它设置为 MAMP php 文件。仍然没有工作。每次尝试更改 php.ini 后,我还重新启动了 Apache 服务器。但不知何故,我觉得 Netbeans 仍然在使用错误的 php...
  • 如果找到了xdebug,通过在测试文件中写入phpinfo()来检查你的系统中是否正确配置了xdebug。如果找到,请尝试更改端口。
【解决方案2】:

使用此配置并确保更新 Netbeans 以使用端口 9001。

[xdebug]

zend_extension="/Applications/MAMP/bin/php/php5.3.6/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"

xdebug.remote_host=localhost
xdebug.remote_port=9001
xdebug.remote_enable=1
xdebug.idekey="netbeans-xdebug"

我发现9000端口有时会与其他应用程序冲突,xdebug如果不能使用它似乎会静默失败。

【讨论】:

  • 试过关闭防火墙吗?
  • 否,但请参阅我在问题上方的编辑。我通过更改 Safari 加载项中的 ide 密钥使连接正常工作。但我的行为仍然很奇怪......
  • 您的应用正在返回 404,xdebug 工作正常。
  • 好吧,但是 xdebug、ide 和 codeigniter 如何协同工作似乎有些问题......似乎在所有示例中,我都阅读了一个默认页面(index.php)用于调试不知何故,在 codeigniter 中,您本身没有 index.php 起始页面,而是加载 php 页面的起始控制器。但如果这是问题所在,我似乎无法正确指定。
  • CodeIgniter 在处理$_GET 请求方面很糟糕,我会建议一个更好的框架,比如 symfony,认真的。如果您仍然想受 CI 困扰,请尝试此搜索 google.com.ar/search?q=_GET+codeigniter+XDebug
【解决方案3】:

我的终于可以工作了,所以我想发布我的完整 php.ini 配置:

[xdebug]
; got this script from https://netbeans.org/kb/docs/php/configure-php-environment-mac-os.html
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9001
xdebug.remote_autostart=1
xdebug.idekey="netbeans-xdebug"
zend_extension="/Applications/MAMP/bin/php5.3/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_log="/Applications/MAMP/logs/xdebug_remote.log"

您还可以在 Netbeans 项目设置中检查您的项目是否配置为复制到不同的目录。更改此设置后,我必须使用 quit 命令重新启动 Netbeans 和 MAMP。

请注意:

  • 我的启动属性中没有 index.php
  • 在调试首选项中关闭第一行停止
  • 我确实认为更改为端口 9001 对我的系统产生了影响

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多