【问题标题】:Codeigniter + NetBeans + XDebug : Debugger not working after redirect()Codeigniter + NetBeans + XDebug:重定向后调试器不工作()
【发布时间】:2013-06-13 14:40:30
【问题描述】:

我正在做一个使用CodeIgniter 的项目。我使用Netbeans 作为我的IDE,并且我安装了Xdebug。我正在使用XAMPP 进行本地开发。

工作原理: Xdebug 对normal PHP code. 工作正常

问题:但是,我在调试CodeIgniter 项目时遇到了问题。调试器在 redirect() 处停止

问题详情: 在 netbeans 中启动调试项目。调试器启动,我们看到主页。在主页上,有一个链接对应于主页控制器中的方法。 调试器到达链接指向的控制器中的方法。在这个方法中有一个redirect重定向调试器停止。

相关代码片段:

被点击的 URL(这是标题菜单的一部分)

<a href="<?= base_url("somefunc/"); ?>">Click Me </a>

routes.php - 为更漂亮的 url 重新路由。

$route['somefunc'] = "foo/somefunc";

在我的 Foo 控制器 (foo.php) 中:

class Foo extends CI_Controller {
    public function somefunc()
    {
        redirect('/bar/otherfunc');  // DEBUGGER REACHES TILL HERE THEN STOPS WORKING
    }
}

正如上面function somefunc() 的评论中所说,Xdebug 在重定向发生的地方停止工作。

此外,以下信息可能会有一些用处:

config.php

$config['uri_protocol'] = 'AUTO'; // I have also tried PATH_INFO, QUERY_STRING, REQUEST_URI & ORIG_PATH_INFO.
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
$config['enable_query_strings'] = TRUE; // Have tried FALSE too.
$config['index_page'] = ''; // Tried index.php too.

xdebug 设置在php.ini

zend_extension ="path\to\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000

注意 - 我已经尝试过使用我在这里以及通过谷歌看到的不同建议,但无济于事。有人可以指出我正确的方向吗?

【问题讨论】:

  • 您可能需要在重定向到的任何脚本中再次开始调试。通常,redirect() 函数包含 exit; 语句。
  • 嗨,山姆,感谢您的评论。您的建议确实有效,但我希望有一个更强大的解决方案。

标签: php codeigniter netbeans netbeans-7 xdebug


【解决方案1】:

找到了解决办法。也许这可能会帮助其他一直在努力解决这个问题的人。显然,为了顺利调试,您需要包含以下选项:

xdebug.remote_autostart=1

在您的php.ini 中。这些设置现在对我有用:

xdebug.remote_enable=on
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_autostart=1

最后一行是我在 (Xdebug Official Documentation) 上找到的选项。文档的相关部分如下所述:

xdebug.remote_autostart

类型:布尔值,默认值:0

通常您需要使用特定的 HTTP GET/POST 变量来启动远程调试(请参阅远程调试)。当此设置设置为 1 时,Xdebug 将始终尝试启动远程调试会话并尝试连接到客户端,即使 GET/POST/COOKIE 变量不存在。

【讨论】:

  • 谢谢。我有同样的问题,然后试试你的建议:xdebug.remote_autostart=1 现在它可以工作了。
  • 你是男人中的神,谢谢你回答你自己的问题
  • 哇,你拯救了这一天
【解决方案2】:

我发现了同样的问题,并通过升级我的 xdebug 版本来修复它。

我使用的版本(xdebug 2.1.3)似乎存在错误,但在 xdebug 2.2.3 上一切正常。

使用此工具为您的环境定制安装说明。 http://xdebug.org/wizard.php

【讨论】:

    【解决方案3】:

    请注意,netbeans 不支持$_SERVER['PATH_INFO']http://127.0.0.1/site/test.php/v1/v2/parametertoputonphpathinfo/v3 之类的网址,netbeans 板上存在Mon Sep 09, 2013 8:54 am 的错误,直到 2014 年才做出回应:

    http://forums.netbeans.org/topic56645.html

    使用 sinatra 路由请求的方式使调试框架变得不可能。
    重写我的简单 Sinatra 路由器,使其具有 $_GET 模式进行调试和更好的钩子代码。

    【讨论】:

    • 欢迎来到 Stackoverflow gsd15s6d465,你的回答对我来说很好。您是否愿意通过在短语周围使用反引号 (`) 为代码片段和路径使用正确的内联代码格式?
    猜你喜欢
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2011-02-27
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多