如何在FuelPHP中设置错误通知

时间:2012-12-27 10:59:02

标签: php error-handling fuelphp

当我想将本地开发发布到生产环境时,我遇到了问题, 这个问题是关于错误消息处理。当我使用开发环境访问我的站点时,可以显示错误,但错误不应该显示在生产环境中。

我尝试通过更改/fuel/app/config/config.php并参考此文档http://fuelphp.com/docs/general/configuration.htmlerrors=>false中对此进行配置,但是当我通过在我的网站上生成错误进行测试时,它仍然没有改变查询数据库。

我也试图在index.php中将error_reporting更改为0并将display_errors更改为0,仍然无法修复我的问题......

error_reporting(0);//error_reporting(-1); 
ini_set('display_errors', 0);//ini_set('display_errors', 1);

如何在FuelPHP中禁用生产环境中的错误消息?

3 个答案:

答案 0 :(得分:2)

我认为这里的问题是OP使用工作“环境”而他的意思是“服务器”。

FuelPHP支持多种环境,“开发”是默认设置。在开发模式下,将启用所有错误消息。如果您将代码部署到另一台服务器,但未设置FuelPHP环境,那么您的应用程序也将在该服务器上以开发模式运行。

所以这里的解决方案是在生产服务器上运行FuelPHP是生产模式。您可以通过设置环境变量FUEL_ENV来实现。最简单的是您的虚拟主机定义:

setEnv FUEL_ENV production

请参阅http://fuelphp.com/docs/general/environments.html

答案 1 :(得分:0)

我认为FuelPHP有自动错误处理,我正在开发一个错误测试,显示错误描述错误(类,行,等),我是通过生成错误测试,这是显示错误,但与exeptionist 500并没有显示错误的详细信息。

并确保我在bootstrap.php上添加此代码

// Select "Display Error" each the Environment
if (Fuel::$env === Fuel::DEVELOPMENT) {
    ini_set('display_errors', true);
} else {
    ini_set('display_errors', false);
}

答案 2 :(得分:0)

您可以编辑/fuel/app/bootstrap.php文件来编辑是否显示错误。你会在那里找到这行代码:

Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::PRODUCTION);

在上面的代码之后添加此代码:

if (Fuel::$env === Fuel::PRODUCTION) 
{
    //disable all errors from being shown in the production server
    error_reporting(0);
    ini_set('display_errors', 0);
} 
else
{
    //all environments other than production should display errors
    error_reporting(-1);
    ini_set('display_errors', 1);
}

注意: 尽管可以在运行时设置display_errors(使用ini_set()),但如果脚本存在致命错误,则不会产生任何影响。这是因为未执行所需的运行时操作。资料来源:php.net

此外,这可能很重要。我正在使用Apache配置来确定我正在运行的环境。这意味着我使用以下代码设置.htaccess文件:

SetEnv FUEL_ENV production

我正在运行FuelPHP 1.7