首页 > 解决方案 > CodeIgniter 似乎吞下了(而不是记录)PHP 解析错误。为什么?

问题描述

这让我发疯了。

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

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

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

我还检查了在 CI 应用程序代码(控制器或模型)中,当我调用error_log("something");.

我什至检查是否我故意破坏 CI (在打开后index.php添加一行,解析错误出现在我的日志中。asd<?php

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

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

如果我注释掉整个“ERROR_REPORTING”块,问题仍然存在index.php

为什么会这样?

标签: phpcodeignitercodeigniter-3

解决方案


默认情况下,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.

希望这能回答你的问题。


推荐阅读