【问题标题】:How to set error notifications in FuelPHP如何在 FuelPHP 中设置错误通知
【发布时间】:2012-12-27 10:59:01
【问题描述】:

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

我已尝试通过更改errors=>false 来在/fuel/app/config/config.php 中进行配置,并参考了此文档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 的生产环境中禁用错误​​消息?

【问题讨论】:

  • 你认为errors=>false为什么应该禁用这些?您在那里引用了哪个参考文献?
  • 你也试过设置errors.throttle => 0
  • @hakre 我只是测试了希望禁用错误处理,因为在我测试之前仍然显示错误消息'errors' => array( // Which errors should we show, but continue execution? 'continue_on' => array(), // How many errors should we show before we stop showing them? (prevents out-of-memory errors) 'throttle' => 10, // Should notices from Error::notice() be shown? 'notices' => false,
  • @sean 结果相同,不断显示错误消息..:(

标签: php error-handling fuelphp


【解决方案1】:

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

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

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

setEnv FUEL_ENV production

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

【讨论】:

    【解决方案2】:

    我认为 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);
    }
    

    【讨论】:

      【解决方案3】:

      您可以通过编辑/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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多