如何在CodeIgniter(PHP)中进行错误记录


92

我想在PHP CodeIgniter中记录错误。如何启用错误记录?

我有一些问题:

  1. 记录错误的所有步骤是什么?
  2. 如何创建错误日志文件?
  3. 如何将错误消息推送到日志文件中(无论何时发生错误)?
  4. 您如何通过电子邮件将该错误发送到电子邮件地址?

Answers:


180

CodeIgniter内置了一些错误记录功能。

  • 使您的/ application / logs文件夹可写
  • /application/config/config.php中设置
    $config['log_threshold'] = 1;
    或使用更大的数字,具体取决于您希望在日志中获取多少详细信息
  • log_message('error', 'Some variable did not contain a value.');
  • 要发送电子邮件,您需要扩展核心CI_Exceptions类方法log_exceptions()。您可以自己执行此操作或使用。有关在此处扩展核心的更多信息

参见http://www.codeigniter.com/user_guide/general/errors.html



是否有任何安全隐患?
Aakil Fernandes 2014年

这会将数据转储到php文件,该文件的文件名格式为:log- [Ymd H:i:s]或在配置文件中定义的log_date_format密钥配置中设置的任何值。只要您不记录/转储敏感数据,它就应该很安全。该文件默认情况下是相对于index.html页面的,因此显然不会公开访问生成的php文件-但您永远不会知道。如果更改默认的application / logs目录,请确保已采取所有这些预防措施。
文森特·爱德华·加德里亚·比努阿,2015年

7
使您的/ application / logs文件夹可写<< <<对我
有所

当我设置“ $ config ['log_threshold'] = 1;”时,我的/ application / logs文件夹中没有任何日志。但是,当我设置“ $ config ['log_threshold'] = 3”时,出现了一个日志文件。希望这可以帮助。谢谢!和平。
masarapmabuhay

25

要简单地在服务器的错误日志中添加一行,请使用PHP的error_log()函数。但是,该方法将不会发送电子邮件。

首先,触发错误:

trigger_error("Error message here", E_USER_ERROR);

默认情况下,这将放入服务器的错误日志文件中。请参阅Apache 的ErrorLog指令。设置自己的日志文件:

ini_set('error_log', 'path/to/log/file');

请注意,您选择的日志文件必须已经存在并且可以被服务器进程写入。使文件可写的最简单方法是使服务器用户成为文件的所有者。(服务器用户可以是nobody,_www,apache或其他用户,具体取决于您的操作系统分发。)

要通过电子邮件发送错误,您需要设置一个自定义错误处理程序:

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

请参阅相关的PHP文档以获取更多信息。


3

还要确保您已允许codeigniter记录配置文件中所需的消息类型。

$config['log_threshold'] = [log_level ranges 0-4];



0
In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';

Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.