Вывод ошибок – это необходимая функция для разработчика, но стоит не забывать о том, что после сдачи проекта нужно отключать публичный вывод ошибок, т.к. это потенциальная уязвимость сайта. По ошибкам, которые вылазят на сайте, злоумышленник может подчерпнуть много информации об особенностях вашей системы и использовать их в своих интересах.
Как же отключить ошибки в 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>
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 есть ошибки вида
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»
Вступление
К сожалению ошибки на 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
Если после установки или удаления какого либо модуля в Opencart 3 вы видите белый (пустой) экран или надпись 500 Internal Service Error, то это означает что возникла какая-то системная ошибка php. И чтобы понять по какой причине это произошло, вам необходимо включить отображение и получить текст ошибки.
Сделать это можно несколькими способами:
1) Откройте в редакторе файл .htaccess и добавьте в конце строки:
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
2) Откройте в редакторе файл php.ini и добавьте в конце строки:
display_errors = On;
error_reporting = ~E_ALL;
3) Откройте в редакторе файл index.php и после (
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
После того как вы устраните причину ошибки не забудьте удалить добавленные строки.
Если ничего из выше перечисленного не помогло, то скорее всего приоритет настроек для отображения ошибок находится на стороне вашего сервера, обратитесь в техподдержку вашего хостинга с просьбой включить отображения ошибок php.
Updated on Sep 8, 2016
If you experience any technical difficulties with your OpenCart 2 store it might be a good idea to enable the OpenCart 2 error reporting. These options will help you debug the issue by providing you with additional information on what exactly went wrong with your script.
OpenCart 2 supports two different options for error reporting. On the one hand, you may enable the general error reporting which will display the errors directly into your browser or you can activate the error logging which will write all errors into a file located in your OpenCart installation directory.
The inconvenience of the first method is that all of your visitors will be able to see the errors displayed on your website but see the errors directly via your browser may help you narrow down the problem.
To activate the error reporting, please login your OpenCart 2 Admin dashboard and navigate to the Settings menu.
From the Store list click on the edit icon next to your store name and proceed to the Server settings tab.
Scroll to the bottom of the page and locate the Error reporting options.
If you enable the Display Error option, your site errors will be directly visible on your website. In case you would like to have all errors logged, enable the Log Errors option and make sure you have a valid error log name.
If you enable the Log Errors option you will be able to read your error log either by directly downloading it from your OpenCart 2 root directory or via the Admin Dashboard. To access the Error log via the admin area of your OpenCart, please refer to the Error Logs section via the main navigation menu.
Be advised that your OpenCart error log might get quite large in case your OpenCart 2 generates a lot of warnings or errors.
In case you have the Log Errors option enable you should regularly check the error log and clear it via the Clear Log option.
Prevent PHP error display on front end (Customer) OC 3.0.3.6
I don’t see any way to differentiate between displaying errors just to admin and errors displayed to customers. I don’t like all the site details that are shown when I get a PHP fatal error as someone could use that info to attempt to hack the site.
I’m assuming at this point that I need to either put a line in my .htaccess file, or php.ini but I just haven’t spotted the proper code in my duckduckgo searches and testing is annoying to customers. I’d rather they just saw a white page and tried again later. What would be ideal is if the fatal error could possibly call up a special web page that said something like » Website temporarily broken, please try again soon! Email so&so@sitename.com if you really need something…». That would be cool…
Suggestions appreciated!
Thanks!
Re: Prevent PHP error display on front end (Customer) OC 3.0.3.6
Post
by ADD Creative » Fri Apr 02, 2021 3:08 am
To stop all errors being displayed you need to do all of the following.
1. Set the PHP display_errors setting to Off (or 0 or false). This may need to be done in you main php.in, local php.ini, user.ini, .htaccess or hosting control panel, depending on you hosting setup. If you don’t know where ask your host.
2. Set $_[‘error_display’] to false in you system/config/default.php file.
3. Set Display Errors to No in the OpenCart settings.
You would then need to look in your OpenCart error.log and the PHP error log to know of any errors.
www.add-creative.co.uk
Re: Prevent PHP error display on front end (Customer) OC 3.0.3.6
Post
by jrr » Fri Apr 02, 2021 5:24 am
ADD Creative wrote: ↑
Fri Apr 02, 2021 3:08 am
To stop all errors being displayed you need to do all of the following.
…
Yes, I have a pretty good idea how to disable displaying all errors, what I wanted to do was to turn display errors off just for the front end (customer) folks.
If that is not possible then fine, but then you are stuck with having to ftp in when you see a white screen to get an idea of what went south.
I am readinghttps://www.tutorialspoint.com/php/php_ … ndling.htm in the hopes I can figure that out, but I’m not a coder, so still a bit of a foreign language to me when all is said and done…
Thanks!
Re: Prevent PHP error display on front end (Customer) OC 3.0.3.6
Post
by jrr » Fri Apr 02, 2021 7:37 am
Yeah, fatal errors are the real pain. Too much info is let out to the customer in the form of admin directory name, dbase name etc.
I’m checking out https://www.w3schools.com/php/php_error.asp which can set up special scripts for particular errors once one figures it out enough.
Thanks!
Who is online
Users browsing this forum: No registered users and 11 guests
Избавиться от 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
Вы хотя бы написали, что за ошибки.
Ну и не лучше всё таки эти ошибки исправить / нанять специалиста, который этим займётся? Ведь сообщения не просто так появляются. Совсем уж не отключайте — записывайте в лог хотя бы…
Похожие вопросы
-
Показать ещё
Загружается…
07 июн. 2023, в 10:19
20000 руб./за проект
07 июн. 2023, в 10:12
1000 руб./за проект
07 июн. 2023, в 10:07
500 руб./за проект
Минуточку внимания
I have tried all the solutions over the internet but still i am not able to solve it.
Problem- Opencart Displaying Php/MySql Errors (which also shows the password used to connect to mysql)
When Opencart faces any problem in connecting to MySql Database or due to too many connections php is unable to connect to database a error is displayed in the following format.
Warning: mysqli::mysqli(): (28000/1045): Access denied for user
‘indiaran_admin’@’localhost’ (using password: YES) in
/home3/indiaran/public_html/system/database/mysqli.php on line 6Fatal error: Uncaught exception ‘ErrorException’ with message ‘Error:
Could not make a database link’ in
/home3/indiaran/public_html/system/database/mysqli.php:9 Stack trace:#0 /home3/indiaran/public_html/vqmod/vqcache/vq2-system_library_db.php(13):
DBMySQLi->__construct(‘localhost’, ‘indiaran_admin’, ‘PASSWORD‘,
‘indiaran_db’) #1 /home3/indiaran/public_html/index.php(44):
DB->__construct(‘mysqli’, ‘localhost’, ‘indiaran_admin’,
‘PASSWORD‘, ‘indiaran_db’) #2 {main} thrown in
/home3/indiaran/public_html/system/database/mysqli.php on line 9
Expected Solutions:- (any would do)
- Opencart Stops Displaying Any error Mysql/php
- Error is Displayed without showing my database id and password.
- Any Solution which stops displaying all the error (including the mysqli connect errors)
Solutions Tried:-
First
php.ini has
display_errors = Off;
error_reporting = 0;
htaccess has
php_value error_reporting 0
Second
There is a setting within the OpenCart dashboard that allows you to turn on (or off) error reporting and logging.
Log into your dashboard
In the menu, go to "System" and select "Settings"
In the list of stores, click "Edit" for your store
Click the "Server" tab.
Scroll down, and there's two settings:
a. Log Errors - set this as desired
b. Display Errors - set this to "No"
Third
Commenting Out set_error_handler('error_handler'); in index.php
Fourth
Using Php Try-Catch Phrase, which i dont know exactly how to use in opencart.
Hope i am able to explain myself and someone would be able to helpme.
PS:-
My Website is Hosted with Hostgator as a Shared Hosting.
Links to Similar problems which were unable to solve my problem.
http://stackoverflow.com/questions/16935473/cant-disable-error-reporting-in-opencart-php
http://stackoverflow.com/questions/5040048/php-mysql-too-many-connections-to-database-error
http://stackoverflow.com/questions/25957024/warning-mysqlimysqli-mysqli-mysqli-08004-1040-too-many-connections-in
http://stackoverflow.com/questions/28591394/mysqli-connect-error-shows-password/28591455#28591455
Вступление
К сожалению ошибки на 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