我正在开发一个使用CodeIgniter
的项目。我使用Netbeans
作为我的IDE并安装了Xdebug
。我正在使用XAMPP
进行本地开发。
什么有效: Xdebug适用于normal PHP code.
问题:但是,我在调试CodeIgniter
项目时遇到问题。调试器在redirect()
问题详情:在netbeans中开始调试项目。调试器启动,我们看到主页。在主页上,有一个与主页控制器中的方法相对应的链接。 调试器到达链接指向的控制器中的方法。在这种方法中有一个redirect
。 重定向调试器STOPS。
相关代码段:
点击的网址(这是标题菜单的一部分)
<a href="<?= base_url("somefunc/"); ?>">Click Me </a>
routes.php - 为更漂亮的网址重新路由。
$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.
php.ini
中的xdebug 设置
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
注意 - 我已经尝试过使用我在这里看到的不同建议,以及通过谷歌但无济于事。有人可以指出我正确的方向吗?
答案 0 :(得分: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 Official Documentation)上找到的选项。文件的相关部分如下所述:
<强> xdebug.remote_autostart 强>
类型:布尔值,默认值:0
通常,您需要使用特定的HTTP GET / POST变量来启动远程调试(请参阅远程调试)。当此设置设置为1时,即使GET / POST / COOKIE变量不存在,Xdebug也将始终尝试启动远程调试会话并尝试连接到客户端。
答案 1 :(得分:0)
我发现了同样的问题,并通过升级我的xdebug版本来修复它。
我使用的版本中似乎存在一个错误(xdebug 2.1.3),但它在xdebug 2.2.3上运行良好。
使用此工具获取适用于您的环境的自定义安装说明。 http://xdebug.org/wizard.php
答案 2 :(得分:0)
请注意,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模式进行调试,并获得更好的钩子代码。