CodeIgniter似乎吞下(不记录)PHP解析错误。为什么呢?

时间:2018-06-15 23:56:05

标签: php codeigniter codeigniter-3

这让我疯了。

我在Centos-Apache-PHP服务器(PHP 7.2.6)中安装了最新CodeIgniter(3.1.9)的干净副本。

在全球范围内,我的PHP会将错误记录到(例如)/var/www/logs/php_err.log

我检查确实在那里记录了我的PHP错误,包括解析错误(PHP Parse error: syntax error, unexpected 'public' (T_PUBLIC)...),在任何非CI PHP页面中。它还会记录require_once()中包含的文件中是否发生解析错误。

我还检查,在CI应用程序代码(控制器或模型)中,当我调用error_log("something");时,它会在那里记录。

我甚至会检查,如果我打算破解CI index.php(在打开asd后添加<?php行,则会在我的日志中显示解析错误。

问题是(例如)控制器中的解析错误(例如,移除application/controllers/Welcome.php中的第一个大括号),会给出一个普通的500错误页面,并且在日志文件中没有任何内容

通过将环境从production更改为development,我可以在网页中看到解析错误。但在日志中仍然没有。而且,无论如何,我绝对想要日志中的错误,也是生产中的错误!

如果我在index.php

中注释掉整个“ERROR_REPORTING”块,问题仍然存在

为什么会这样?

1 个答案:

答案 0 :(得分:1)

默认情况下,Codeigniter使用自己的错误报告系统。要记录错误,请查看config.php下的$config['log_threshold'];文件。变量上方有一个定义表,用于定义不同的值等于什么,但我认为$config['log_threshold'] = 1;将适用于您的目的(默认情况下它为0即关闭)。如果您有用于生产/开发的不同文件夹,那么您应该为两个配置文件修改此变量。默认情况下,如index.php所示,生产错误会通过此行从输出中抑制:ini_set('display_errors', 0);

日志将显示在application/logs/目录中,并由Y-m-d H:i:s组织。

希望这能回答你的问题。