【问题标题】:Can't disable error reporting in OpenCart (PHP)无法在 OpenCart (PHP) 中禁用错误​​报告
【发布时间】:2013-05-31 21:22:00
【问题描述】:

我似乎无法在 PHP 中禁用错误​​报告 - 我已经尝试了所有方法,但仍然显示“通知”错误。

我的 php.ini 有

display_errors = Off;
error_reporting = 0;

我的 .htaccess 有

php_value error_reporting 0

我的脚本有

ini_set('display_errors', 'Off');
ini_set('log_errors', 1);
ini_set('error_reporting', 0);
ini_set('display_startup_errors', 'Off');

php_info();

echo $my_undefined_var;

php_info() 输出确认 display_errors 和 error_reporting 确实为 off 和 0,但我仍然收到通知,

注意:未定义变量:my_undefined_var in /my/site/path/index.php?blahblah...

请注意,这是一个 OpenCart 网站(我的更改位于管理部分)。我已经尝试在 index.php 所在的目录中创建一个测试 php 脚本,这很好。

还有什么可以覆盖error_reporting(0) 的吗?

我已经对整个站点进行了一次 grep,以查找并禁用所有提及 error_reporting 和 display_errors 但无济于事。

【问题讨论】:

  • 将 log_errors 设置为 1 有什么意义?你想记录什么?
  • 除此之外,标题自然让我颤抖。
  • 我真的不想记录任何东西...我在另一个论坛上读到,要禁用错误显示,您可能必须启用错误记录 - 对我来说没有意义,但我在我会尝试任何事情的地步。但如果我把它拿出来就没什么区别了

标签: php opencart error-reporting ini-set


【解决方案1】:

对我有帮助: //error_reporting(E_ALL);

在文件startup.php中

【讨论】:

    【解决方案2】:

    OpenCart 中的真正方法。

     $this->config->set('config_error_display', 0);
     $this->processAction(); // it throws ugly warning
    

    我已经在我的模块的控制器中进行了测试。 只是为了在您的代码之前关闭显示错误。 它只影响当前会话(甚至可能是当前页面)。 不影响数据库!

    【讨论】:

      【解决方案3】:

      正如@colmde 已经指出的那样,OpenCart 使用自定义 error_handler。

      您可以通过以下方式关闭错误显示,而无需进行任何代码编辑(尤其是 OpenCart 核心文件):

      Admin->System->Settings->[edit your configured store]->Server->Display Errors

      [编辑] 您可以通过对 OpenCart 数据库运行以下查询来执行相同操作:

      update setting set `value`= 1 where `key` = 'config_error_display'
      

      【讨论】:

      • 为我工作:UPDATE 'TABLENAME'.'oc_setting' SET 'value' = '0' WHERE 'oc_setting'.'setting_id'=1057;
      • 完全有效,原因是你在设置的时候选择使用oc_前缀作为OpenCart表,所以setting变成了oc_setting
      【解决方案4】:

      OpenCart 仪表板中有一个设置允许您打开(或关闭)错误报告和日志记录。

      1. 登录您的仪表板
      2. 在菜单中,转到“系统”并选择“设置”
      3. 在商店列表中,为您的商店点击“编辑”
      4. 点击“服务器”标签。
      5. 向下滚动,有两个设置:
        一种。记录错误 - 根据需要进行设置
        湾。显示错误 - 将此设置为“否”

      【讨论】:

        【解决方案5】:

        你可以简单地使用

        ini_set('display_errors', 0);
        

        在系统/startup.php上

        【讨论】:

        • 我想做相反的事情:打开错误报告(结果很困难,但这有效!)
        【解决方案6】:

        OpenCart 使用 set_error_handler() 函数,这会导致它覆盖 error_reporting(0)

        删除这个解决了我的问题。

        【讨论】:

          猜你喜欢
          • 2011-04-06
          • 2014-01-13
          • 2013-09-05
          • 2015-04-24
          • 2013-07-12
          • 2012-07-09
          • 1970-01-01
          • 1970-01-01
          • 2014-09-21
          相关资源
          最近更新 更多