首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用phpdbg调试codeigniter

使用phpdbg调试codeigniter
EN

Stack Overflow用户
提问于 2015-06-24 16:15:43
回答 2查看 373关注 0票数 2

我正在尝试调试一个基于CodeIgniter (2.x)框架的web应用程序。我已经尝试了var_dumping $_SERVER,并在我的调试会话开始时重新创建了它(bootstrapping phpdbg)。

代码语言:javascript
复制
$ phpdbg -e index.php
phpdbg> ev require('boostrap.php');
phpdbg> run

然而,它给了我一个404。即使通过浏览器请求页面会给出正确的结果。谁能告诉我如何正确引导phpdbg,以便在codeigniter中加载正确的页面?这是我的引导代码,如果有帮助的话。

代码语言:javascript
复制
<?php
$_SERVER = array (
    'HTTP_USER_AGENT' => 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv: 38.0) Gecko/20100101 Firefox/38.0',
    'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'HTTP_ACCEPT_LANGUAGE' => 'en-US,en;q=0.5',
    'HTTP_ACCEPT_ENCODING' => 'identity,gzip,deflate',
    'HTTP_CONNECTION' => 'keep-alive',
    'PATH' => '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin',
    'SERVER_SIGNATURE' => '<address>Apache/2.4.12 (Ubuntu) Server at api.timzwart.local.mybit.nl Port 80</address>',
    'SERVER_SOFTWARE' => 'Apache/2.4.12 (Ubuntu)',
    'SERVER_NAME' => 'api.timzwart.local.mybit.nl',
    'SERVER_ADDR' => '192.168.1.35',
    'SERVER_PORT' => '80',
    'REMOTE_ADDR' => '192.168.1.35',
    'DOCUMENT_ROOT' => '/var/www/vhosts/api.timzwart.local.mybit.nl',
    'REQUEST_SCHEME' => 'http',
    'CONTEXT_PREFIX' => '',
    'CONTEXT_DOCUMENT_ROOT' => '/var/www/vhosts/api.timzwart.local.mybit.nl',
    'SERVER_ADMIN' => 'webmaster@localhost',
    'SCRIPT_FILENAME' => '/var/www/vhosts/api.timzwart.local.mybit.nl/index.php',
    'REMOTE_PORT' => '40706',
    'GATEWAY_INTERFACE' => 'CGI/1.1',
    'SERVER_PROTOCOL' => 'HTTP/1.0',
    'REQUEST_METHOD' => 'GET',
    'QUERY_STRING' => '',
    'REQUEST_URI' => '/events/185151',
    'SCRIPT_NAME' => '/index.php',
    'PATH_INFO' => '/events/185151',
    'PATH_TRANSLATED' => 'redirect:/index.php/events/185151/185151',
    'PHP_SELF' => '/index.php/events/185151',
    'REQUEST_TIME_FLOAT' => 1435128205.281,
    'REQUEST_TIME' => 1435128205,
    'REDIRECT_URL' => '/events/185151',
    'REQUEST_URI' => '/events/185151',
    'argv' => array('events','185151'),
);
?>
EN

回答 2

Stack Overflow用户

发布于 2015-07-11 00:48:43

好的,你可以在phpdbg cli中检查这个常量,看看它是否被定义了。你必须开始在codeigniter代码上创建中断..找到返回404的file:行,并在其中或之前添加一个分隔符,然后一步一步地执行,如果缺少某些内容,您将会找到答案。

票数 0
EN

Stack Overflow用户

发布于 2015-09-07 22:13:28

如果您可以编辑框架本身的版本,一个可能的解决方案是查找所有引用输入法的行,并编辑这些行以接受一些伪造的调试常量。它会变成这样。然后,您可以在实际调试之前在phpdbg中使用ev设置常量。

代码语言:javascript
复制
system/core/Input.php:      return (!defined('DEBUGGING_FAKE_WEBREQUEST') AND (php_sapi_name() === 'cli' OR defined('STDIN')));
system/core/URI.php:            if (!defined('DEBUGGING_FAKE_WEBREQUEST') AND (php_sapi_name() == 'cli' or defined('STDIN')))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31021245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档