【发布时间】:2014-08-27 09:47:29
【问题描述】:
在生产环境中运行 Codeigniter 应用程序时,我希望能够记录特定 PHP 错误中的错误。问题在于,使用 CI 记录 PHP 错误需要将 CI 日志级别设置为错误或更高,从而将这些错误显示到屏幕上。在生产环境中,我想将这些错误记录到日志文件中,但不显示在屏幕上。
有没有人能够做到这一点?
【问题讨论】:
标签: php codeigniter error-handling
在生产环境中运行 Codeigniter 应用程序时,我希望能够记录特定 PHP 错误中的错误。问题在于,使用 CI 记录 PHP 错误需要将 CI 日志级别设置为错误或更高,从而将这些错误显示到屏幕上。在生产环境中,我想将这些错误记录到日志文件中,但不显示在屏幕上。
有没有人能够做到这一点?
【问题讨论】:
标签: php codeigniter error-handling
在 Codeigniter 版本 3.1.10 如果您想记录错误但又不想在生产环境的屏幕上显示它,
然后您必须在主根文件index.php 中更改环境变量的值并搜索变量ENVIRONMENT 并进行更改。
默认情况下如下:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'development');
将其更改为:
define('ENVIRONMENT', isset($_SERVER['CI_ENV']) ? $_SERVER['CI_ENV'] : 'production');
现在错误不会显示在屏幕上,
但是您想记录错误,因此您必须更改配置文件的 log 变量,该变量位于
application/config/config.php
默认情况下会是:
$config['log_threshold'] = 0;
将其更改为:
$config['log_threshold'] = 1;
现在日志文件夹中的日志文件将按日期创建,您可以在其中看到记录的 php 错误。
为log_threshold 变量解释的选项:
0 = Disables logging, Error logging TURNED OFF
1 = Error Messages (including PHP errors)
2 = Debug Messages
3 = Informational Messages
4 = All Messages
对于实时站点,您通常只会启用要记录的错误 (1),否则 您的日志文件会很快填满。
【讨论】:
我不确定,但我认为您需要将显示错误设置为 0 并将 error_reporting 设置为 e_all
ini_set("display_errors",1);
error_reporting(E_ALL);
【讨论】:
在config/config.php中设置如下内容:
$config['log_threshold'] = 4;
$config['log_path'] = 'appropriate path of the file';
您可以在应用程序中的任何位置放置以下行(例如在控制器、模型或助手中)。
log_message('info', 'some message');
执行应用程序后,将创建一个日志文件,名称为当前日期。
如果您检查该文件,您将收到日志消息。
如果您的消息正在打印,则意味着您的文件正在正确执行,直到它正在执行 log_message() 函数。您可以多次检查放置线并检查。
希望我的回答有用。如果没有请评论。我会尽力解决你的问题。
参考链接:https://ellislab.com/codeigniter/user-guide/general/errors.html
【讨论】: