Как отключить вывод ошибок opencart

I can’t seem to disable error reporting in PHP — I have tried everything but «Notice» errors are still displayed.

My php.ini has

display_errors = Off;
error_reporting = 0;

My .htaccess has

php_value error_reporting 0

And my script has

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;

The php_info() output confirms that display_errors and error_reporting are indeed off and 0, and yet I still get a notice,

Notice: Undefined variable: my_undefined_var in /my/site/path/index.php?blahblah…

Note this is an OpenCart website (and my change is in the Admin section). I have tried creating a test php script in the same directory as index.php and it’s fine.

Is there anything else that could be overriding the error_reporting(0) ?

I’ve done a grep of the entire site to find and disable all mentions of the error_reporting and display_errors but to no avail.

Вывод ошибок – это необходимая функция для разработчика, но стоит не забывать о том, что после сдачи проекта нужно отключать публичный вывод ошибок, т.к. это потенциальная уязвимость сайта. По ошибкам, которые вылазят на сайте, злоумышленник может подчерпнуть много информации об особенностях вашей системы и использовать их в своих интересах.

Как же отключить ошибки в OpenCart?

Прежде всего, вам необходимо знать, что  в OpenCart не работает отключение вывода ошибок через .htaccess

Для отключения вывода ошибок вы должны войти в админку Система > Настройки > Сервер

и отключить показ ошибок:

switch-off-errors-in-opencart

Если у вас не Opencart, а другая CMS, то вы можете использовать следующие правила в .htaccess:

# прячем публичный показ ошибок на сайте

php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off

# включаем запись ошибок в произвольный файл (не забудьте выставить права 755 или 777 на файл лога)

php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

Не забудьте поменять на актуальный для вашего сайта путь на сервере.

Чтобы узнать актуальный для вашего сайта путь на сервере вам нужно либо обратиться к разделу поддержки на сайте вашего хостинг провайдера. Как правило, там есть эта информация.

Либо обратиться непосредственно в службу технической поддержки вашего хостера.

Если вы умеете обращаться с UNIX консолью и у вас есть доступ по протоколу SSH, то вы просто можете набрать команду pwd и узнать эту информацию.

После этого вам нужно создать файл PHP_errors.log (на самом деле, вы можете присвоить любое имя этому логу) и выставить на него права на запись – 0777.

# закрываем просмотр лога извне, т.е. по прямому URL
<Files PHP_errors.log>
Order allow,deny
Deny from all
Satisfy All
</Files>

Если на страницах сайта Opencart  есть ошибки вида 
Notice: Undefined variable: variablename in /home/1/2/3/scriptname.php on line 1

А программиста под рукой нет, то скрыть их можно следующими способами: 

Если есть доступ в админку сайта: 

Идем в раздел «Admin» -> «System» -> «Settings» ->»[имя_магазина]» -> «Server» , находим опцию «Display Errors» («Показывать ошибки») и отключаем её. 

Если доступа в админку сайта нет, но доступ к базе данных сайта имеется:

Открываем в phpMyAdmin  базу сайта и выполняем запрос:

UPDATE `oc_setting` SET `value` = '0' WHERE `key`='config_error_display';

, где  «oc_setting» нужно заменить на имя таблицы настроек вашего магазина (она имеет вид «что-то-там_setting»).

Посмотреть полное название таблицы setting можно в списке таблиц, или в config.php  сайта, в строке 
define('DB_PREFIX', 'что-то-там_');

взять вот это вот «что-то-там_» и добавить его к «setting»

Избавиться от Notice можно отключив вывод ошибок в Настройках. Настройки-сервер-вывод ошибок.

В некоторых случаях могут пригодится 2 волшебные строчки в .htacces для включения ошибок:

php_flag display_errors on
php_value error_reporting E_ALL


Комментарии (0)

Имя:

Электронная почта:

Разрешённые теги: <b><i><br>Добавить новый комментарий:

Юрий Янин

@VPank

Бессмертие ради знаний. Знания ради бессмертия.

Стоит opencart oс 2.2. Поставил модули pickpoint и сдэк. С горем пополам запустил их обоих. Работают на ура. Но выводят ошибки в шапку корзины. Также стоит симпла. В админке и симпле выключил вывод ошибок. Но opencart игнорирует эти инструкции и дальше выводит жалобы на currency.php Могу я что-то где-то прописать в файлах или удалить, чтобы просто не выводились ошибки?


  • Вопрос задан

    более трёх лет назад

  • 314 просмотров


Комментировать

Пригласить эксперта


Ответы на вопрос 1

Kalombyr

Вы хотя бы написали, что за ошибки.
Ну и не лучше всё таки эти ошибки исправить / нанять специалиста, который этим займётся? Ведь сообщения не просто так появляются. Совсем уж не отключайте — записывайте в лог хотя бы…


Похожие вопросы


  • Показать ещё
    Загружается…

09 июн. 2023, в 15:17

20000 руб./за проект

09 июн. 2023, в 15:09

15000 руб./за проект

09 июн. 2023, в 15:02

10000 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Как отключить все ошибки в windows 7
  • Как отключить восстановление после ошибок windows 7
  • Как отключить в ворде подчеркивание красным ошибок
  • Как отключить в биосе все ошибки
  • Как отключить биос на проверку ошибок