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
Для отключения вывода ошибок вы должны войти в админку Система > Настройки > Сервер
и отключить показ ошибок:
Если у вас не 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
Вы хотя бы написали, что за ошибки.
Ну и не лучше всё таки эти ошибки исправить / нанять специалиста, который этим займётся? Ведь сообщения не просто так появляются. Совсем уж не отключайте — записывайте в лог хотя бы…
Похожие вопросы
-
Показать ещё
Загружается…
09 июн. 2023, в 15:17
20000 руб./за проект
09 июн. 2023, в 15:09
15000 руб./за проект
09 июн. 2023, в 15:02
10000 руб./за проект