当我想将本地开发发布到生产环境时,我遇到了问题, 这个问题是关于错误消息处理。当我使用开发环境访问我的站点时,可以显示错误,但错误不应该显示在生产环境中。
我尝试通过更改/fuel/app/config/config.php
并参考此文档http://fuelphp.com/docs/general/configuration.html在errors=>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中禁用生产环境中的错误消息?
答案 0 :(得分:2)
我认为这里的问题是OP使用工作“环境”而他的意思是“服务器”。
FuelPHP支持多种环境,“开发”是默认设置。在开发模式下,将启用所有错误消息。如果您将代码部署到另一台服务器,但未设置FuelPHP环境,那么您的应用程序也将在该服务器上以开发模式运行。
所以这里的解决方案是在生产服务器上运行FuelPHP是生产模式。您可以通过设置环境变量FUEL_ENV来实现。最简单的是您的虚拟主机定义:
setEnv FUEL_ENV production
答案 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