Вывод ошибок – это необходимая функция для разработчика, но стоит не забывать о том, что после сдачи проекта нужно отключать публичный вывод ошибок, т.к. это потенциальная уязвимость сайта. По ошибкам, которые вылазят на сайте, злоумышленник может подчерпнуть много информации об особенностях вашей системы и использовать их в своих интересах.
Как же отключить ошибки в 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>
[Solved] Error reporting is on. How do I get it off?
Version 3.0.3.6
Theme: Default
I see an error in my shop and it is displayed on the top of the visitors screen:
Code: Select all
Notice: Trying to access array offset on value of type bool in /home/shop/domains/public_html/catalog/controller/startup/startup.php on line 166
These errors are also nicely logged at the backend.
In php.ini (in the root) I see this:
Code: Select all
;display_errors = 1
;error_reporting = E_ALL
So these lines are commented out, I would say.
But why are the Errors and Warnings shown then? How do I turn that off?
Regards,
Barend
Last edited by Barend on Sat Jan 23, 2021 11:48 pm, edited 2 times in total.
Re: Error reporting is on. How do I get it off?
Post
by mikeinterserv » Sat Jan 23, 2021 5:44 am
Do you have display errors checked in the shop settings > SERVER TAB
At the bottom
Re: Error reporting is on. How do I get it off?
Post
by sw!tch » Sat Jan 23, 2021 6:39 am
Full Stack Web Developer :: Send a PM for Custom Work.
Backup and learn how to recover before you make any changes!
Re: Error reporting is on. How do I get it off?
Post
by straightlight » Sat Jan 23, 2021 11:30 am
It’s also fixed on the master branch.
Dedication and passion goes to those who are able to push and merge a project.
Regards,
Straightlight
Programmer / Opencart Tester
Joined
Mon Nov 14, 2011 11:38 pm
Canada, ON
Re: Error reporting is on. How do I get it off?
Post
by Barend » Sat Jan 23, 2021 3:43 pm
mikeinterserv wrote: ↑
Sat Jan 23, 2021 5:44 am
Do you have display errors checked in the shop settings > SERVER TAB
At the bottom
Solutions are sometimes so simple. Thank you!
Re: Error reporting is on. How do I get it off?
Post
by Barend » Sat Jan 23, 2021 3:54 pm
Since it was ‘only’ a notice the solving of the issue would have been my next priority
Thanks to you I have already done that now too.
Who is online
Users browsing this forum: Bing [Bot], pprmkr and 23 guests
@VPank
Бессмертие ради знаний. Знания ради бессмертия.
Стоит opencart oс 2.2. Поставил модули pickpoint и сдэк. С горем пополам запустил их обоих. Работают на ура. Но выводят ошибки в шапку корзины. Также стоит симпла. В админке и симпле выключил вывод ошибок. Но opencart игнорирует эти инструкции и дальше выводит жалобы на currency.php Могу я что-то где-то прописать в файлах или удалить, чтобы просто не выводились ошибки?
-
Вопрос задан
-
326 просмотров
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Вы хотя бы написали, что за ошибки.
Ну и не лучше всё таки эти ошибки исправить / нанять специалиста, который этим займётся? Ведь сообщения не просто так появляются. Совсем уж не отключайте — записывайте в лог хотя бы…
Похожие вопросы
-
Показать ещё
Загружается…
21 сент. 2023, в 16:10
4500 руб./за проект
21 сент. 2023, в 16:00
100000 руб./за проект
21 сент. 2023, в 15:53
10000 руб./за проект
Минуточку внимания
Вступление
К сожалению ошибки на Opencart бывают их причина не обязательно связана с неумелым администрированием. Вы вполне можете получить ошибку 500, Internal Service Error при удалении модуля или шаблона. Более часто, вы даже не увидите сообщение об ошибке, а получите «белый экран смерти», чистую страницу браузера.
Дело в том, что по умолчанию вывод ошибок системы по умолчанию отключен. Делается это из-за соображений безопасности и в рабочем состоянии вывод ошибок должен быть отключен всегда.
Включить отображение ошибок php в Opencart нужно только для отладки и исправления ошибки. После исправления показ ошибок нужно убрать.
Включить отображение ошибок php в Opencart можно несколькими способами.
Способ 1
Веб сервер Apache.
Чтобы включить показ ошибок, добавьте в конец файла .htaccess
корня такие строки:
php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on
Напомню файл .htaccess
переименовывается из коробочного файла htaccess.txt
и служит для управления веб-сервером Apache.
Способ 2
(PHP 4, 5, 7)
Файл php.ini
самого магазина работает, если ваш сервер разрешает пользовательские настройки над системными. Случается это не часто, но всё же.
Чтобы включить отображение ошибок php на Opencart найдите в файле php.ini
строку и поменяете off на on/
display_errors = On;
Также допишите в конец файла:
error_reporting = ~E_ALL;
Команда error_reporting
— задает тип ошибок отчета, значение E_ALL
означает, что попадут в отчет все ошибки.
Важно, что display_errors
не показывает ошибки старта PHP. Для их включения нужна директива:
display_startup_errors=On.
После исправления ошибок поменяйте On на Off и закомментируйте новые строки.
Способ 3
(PHP 4, 5, 7)
Есть вариант показать ошибки, подправив файл index.php
корня. Вставьте функции включения информации (после <?php
):
ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1);
После исправления ошибки обязательно удалите эти строчки.
Предостережения
Отладка и исправления ошибок «по живому» дело хорошее, но напомню, что не все ошибки можно быстро исправить и на такой случай вам всегда нужно иметь резервную копию магазина для восстановления.
Во-вторых, перед правкой перечисленных в статье файлов делайте, как минимум их копию для резерва.
Вывод
Я показал, как включить отображение ошибок php в Opencart. Какой способ сработает на практике, зависит от настроек и конфигурации вашего сервера. Не забываем, что на сервере ведется журнал log ошибок. Правда, их тоже нужно включить в директиве: log_errors=Off
.
Документация
- php.net/manual/ru/ini.list.php
- php.net/manual/ru/function.ini-set.php
- php.net/manual/ru/function.error-reporting.php
©opencart.life