这让我疯了。
我在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
为什么会这样?
答案 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
组织。
希望这能回答你的问题。