我希望 codeigniter 回显 php 错误而不是 500 内部错误

Posted

技术标签:

【中文标题】我希望 codeigniter 回显 php 错误而不是 500 内部错误【英文标题】:I want codeigniter to echo php errors instead of 500 internal error 【发布时间】:2012-12-19 19:19:45 【问题描述】:

我目前已将我的 Codeigniter 根 index.phpenvironment 变量设置为 development

而且我还没有启用小 URL 模式。

我不喜欢日日夜夜查看/var/log/apache2/error.log

希望我的 PHP 错误返回到页面。 500 Internal error 确实是*HARD*est 可以用来显示错误的方法。

请注意,我们正在使用默认配置的 Ubuntu 12.04 LTS 服务器。

【问题讨论】:

可能不是 codeigniter,你检查过php.ini 是否有display_errors 【参考方案1】:

我遇到了同样的问题,我从 codeigniter 得到的唯一问题是 500 内部错误。(我的旧项目和全新安装也是如此) 但有趣的是,我的非 CI 项目仍然有效,主要包含 php。

写出错误的提示

ini_set('display_errors', 'On' / ,1)

解决了我的问题,由于某种原因,我无权读取 codeigniter 核心文件。

在文件中添加“+r”可以解决问题。

鲁迪·维瑟 卡洛斯IPe 我感谢你们的解决方案。

【讨论】:

【参考方案2】:

正如评论中提到的,我怀疑这是 CodeIgniter 的问题。您更有可能只是在您的php.ini 中将display_errors 设置为关闭。

如果我没记错的话,CI 的 index.php 包含对 ini_set('error_reporting', ..); 的调用以更改默认行为,因此您始终可以先查看那里,看看发生了什么。

刚刚看了一下,这里是默认的:

/*
|---------------------------------------------------------------
| PHP ERROR REPORTING LEVEL
|---------------------------------------------------------------
|
| By default CI runs with error reporting set to ALL.  For security
| reasons you are encouraged to change this when your site goes live.
| For more info visit:  http://www.php.net/error_reporting
|
*/
    error_reporting(E_ALL);

如果您只是在下面添加ini_set('display_errors', 1);,它应该可以正常工作了。显然最好的办法是为您的环境添加一个开关来设置这些变量,我不知道为什么它已经不是那样了,但这里有一个例子:

if (defined('ENVIRONMENT'))

    switch (ENVIRONMENT)
    
        case 'development':
            error_reporting(E_ALL);
            ini_set('display_errors', 1);
            break;
        case 'production':
            error_reporting(0);
            ini_set('display_errors', 0);
            break;
    

【讨论】:

以上是关于我希望 codeigniter 回显 php 错误而不是 500 内部错误的主要内容,如果未能解决你的问题,请参考以下文章

获取数据在 CodeIgniter 中不起作用

PHP-CODEIGNITER如何在会话中获取数据

CodeIgniter form_validation 未显示错误

在 codeigniter Active Record 中执行和不执行之前的回显查询

未定义的属性:stdClass::codeigniter 3 with php 5.3.6

在 codeigniter 中未访问 home.php