繁体   English   中英

我想codeigniter回应php错误而不是500内部错误

[英]I want codeigniter to echo php errors instead of 500 internal error

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

我还没有启用微小的URL模式。

我不喜欢每天都检查/var/log/apache2/error.log

希望我的PHP错误回到页面。 500内部错误实际上是* HARD * est方法,可用于显示错误。

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

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

如果我没记错的话,CI的index.php包含对ini_set('error_reporting', ..);的调用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;
    }
}

只需在开发环境案例中的index.php中添加以下内容:

case 'development':
 error_reporting(E_ALL);
 ini_set('display_errors', 'On');

编辑:正如Rudi Visser所说,你可以修改它改变你的php.ini。 我更喜欢在这里修复它,所以每当我下载项目时(我的笔记本电脑,办公室电脑或我在紧急情况下借用的电脑,我都不需要更改php.ini配置)

我有同样的问题,我从codeigniter得到的唯一的东西只有500内部错误。(我的旧项目和干净的安装做了同样的)但有趣的是,我的非CI项目仍然工作,主要包含PHP。

写出错误的提示

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

解决了我的问题由于某种原因我没有权利阅读codeigniter核心文件。

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

鲁迪维瑟
CarlosIPe
我感谢你们两个解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM