Apache、PHP 和 Codeigniter 的错误日志

Apache、PHP 和 Codeigniter 的错误日志

在我们的 Apache 访问日志中,我们注意到用户偶尔会收到 500 错误。这很可能是 CodeIgniter 代码中的数据库查询问题。在看到错误之前,我们无法确定如何修复它。因此,我尝试将错误打印到错误日志中,但一直失败。我的情况如下:

  • 在 Apache 的 php.ini 文件(/etc/php/7.2/apache2/php.ini)中打开错误日志记录,其中包含以下行:log_errors = On
  • CodeIgniter 中的错误报告设置为:error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE);
  • 站点的 Apache vhosts 配置指定了一个错误日志 (/var/log/apache2/minans_error.log),其中填充了有关我们在 .htaccess 文件中阻止的 IP 的通知,但没有 500 错误。
  • php.ini 中的错误最大长度已被设置为 0,具体行号为:log_errors_max_len = 0
  • 我在 CodeIgniter 中强制启用了 log_errors:ini_set('log_errors', 1);

  • 我将错误日志文件的权限更改为 666。

  • 我使用以下命令强制 CodeIgniter 中的错误日志文件:ini_set('error_log', '/var/log/apache2/minans_error.log');

我希望有人能告诉我哪里错了,建议尝试其他的方法,或者如果我误解了 Apache 记录错误的能力,请向我指出。

答案1

在测试中,我编写了一些带有 PHP 错误的测试代码。尝试加载页面时发生 500 错误,并且 PHP 错误被记录到错误日志中。

我们怀疑,用户收到的 500 个错误是数据库查询错误。此错误由 CodeIgniter 处理,不会触发 Apache 的错误日志记录。我在 CodeIgniter 的 config.php 文件中设置了$config['log_threshold'] = 1。现在 CodeIgniter 会将捕获的错误记录到其application/logs目录中。

相关内容