2

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

我试图/fuel/app/config/config.php通过更改errors=>false并引用本文档http://fuelphp.com/docs/general/configuration.html来配置它,但是当我通过在我的数据库查询中产生错误进行测试时它仍然没有改变.

我也尝试在 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 的生产环境中禁用错误​​消息?

4

3 回答 3

2

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

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

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

setEnv FUEL_ENV production

http://fuelphp.com/docs/general/environments.html

于 2013-01-27T00:50:58.673 回答
0

我认为 FuelPHP 具有自动错误处理功能,我正在由 Development 测试一个错误,即显示带有错误描述的错误(类、行等),我正在通过产生错误进行测试,即显示错误但使用 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);
}
于 2013-01-04T03:58:37.253 回答
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

于 2013-10-25T18:39:06.170 回答