无法在OpenCart (PHP)中禁用错误报告

5

我似乎无法在PHP中禁用错误报告 - 我已经尝试了一切,但“Notice”错误仍然显示。

我的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确实都关闭了且值为0,但我仍然收到一个注意事项,
注意:在/my/site/path/index.php?blahblah...中未定义变量:my_undefined_var 请注意,这是一个OpenCart网站(我的更改位于管理部分)。我尝试在与index.php相同的目录中创建一个测试php脚本,效果很好。
是否还有其他可能覆盖error_reporting(0)的因素?
我在整个网站上执行了grep操作,以查找并禁用所有关于error_reporting和display_errors的提及,但都没有成功。

将log_errors设置为1有什么意义?您想记录什么? - Your Common Sense
除此之外,这个标题让我自然而然地感到害怕。 - Your Common Sense
我其实不想记录任何东西...我在另一个论坛上看到,要禁用错误显示,可能需要启用错误日志记录 - 这对我来说没有意义,但我已经到了尝试任何事情的地步。但如果我把它拿出来,也没有任何区别。 - komodosp
http://stackoverflow.com/questions/29986806/how-can-we-disable-error-log-in-opencart-error-store-on-databse/29986840#29986840 - user4684791
6个回答

30

在OpenCart仪表板中有一个设置,可以开启(或关闭)错误报告和日志记录。

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

11

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

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

管理->系统->设置->[编辑您配置的商店]->服务器->显示错误

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

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

1
针对我而言,以下语句有效:UPDATE 'TABLENAME'.'oc_setting' SET 'value' = '0' WHERE 'oc_setting'.'setting_id'=1057; - Harkály Gergő
非常有效,原因是您在安装过程中选择使用 oc_ 前缀来命名 OpenCart 表,因此 setting 被转换为 oc_setting - zergussino

8

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

移除这个函数可以解决我的问题。


4
你可以简单地使用 标签。
ini_set('display_errors', 0);

在system/startup.php文件中


我想做相反的事情:打开错误报告(这很难,但是这样做可以!) - Martijn

0

在OpenCart中的正确方法。

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

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


0
对我有帮助的代码段: //error_reporting(E_ALL);
在startup.php文件中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接