这快把我逼疯了。
我在Centos-Apache-PHP服务器(PHP7.2.6)中安装了最新的CodeIgniter (3.1.9)的干净副本。
在全局上,我的PHP将错误记录到(比如说) /var/www/logs/php_err.log
。
我检查是否确实在那里记录了我的PHP错误,包括任何非CI页面中的解析错误(PHP Parse error: syntax error, unexpected 'public' (T_PUBLIC)...
)。它还会记录在require_once()
包含的文件中是否发生解析错误。
我还检查在CI应用程序代码(控制器或模型)中,当我调用error_log("something");
时,它是否记录在那里。
我甚至检查如果我故意破坏CI的index.php
(在打开的<?php
之后添加一个asd
行,解析错误就会出现在我的日志中。
问题是,(比方说)控制器中的解析错误(例如,删除application/controllers/Welcome.php
中的第一个括号)会给出一个简单的500错误页面,并且在日志文件中nothing。
通过将环境从production
更改为development
,我可以在网页中看到解析错误。但日志里还是什么都没有。而且,在任何情况下,我绝对希望在日志中出现错误,在生产中也是如此!
如果我注释掉index.php
中的整个"ERROR_REPORTING“块,问题仍然存在
为什么会发生这种情况?
发布于 2018-06-16 08:16:04
默认情况下,Codeigniter使用自己的错误报告系统。要将错误记录到日志中,请查看$config['log_threshold'];
下的config.php
文件。在变量上面有一个定义表,定义了不同的值意味着什么,但我认为$config['log_threshold'] = 1;
可以满足您的需要(默认情况下它是0,即关闭)。如果您有用于生产/开发的不同文件夹,那么您应该修改这两个配置文件的这个变量。默认情况下,如index.php
中所示,通过以下行从输出中抑制生产错误:ini_set('display_errors', 0);
。
日志将出现在application/logs/
目录中,并由Y-m-d H:i:s
组织。
希望这能回答你的问题。
https://stackoverflow.com/questions/50883931
复制相似问题