4

我正在开发一个使用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['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

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

4

3 回答 3

9

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

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 官方文档)上找到的选项。文档的相关部分如下所述:

xdebug.remote_autostart

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

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

于 2013-06-13T15:12:19.703 回答
0

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

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

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

于 2013-06-19T05:23:11.810 回答
0

请注意,netbeans 不使用$_SERVER['PATH_INFO']和 url like 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 模式进行调试和更好的钩子代码。

于 2014-07-16T20:12:24.570 回答