Добавить комментарий

Ошибка 500 (Internal Server Error) - как исправить?

Что это за ошибка?

Ошибка 500 - это Internal Server Error или внутренняя ошибка сервера. Еще ее называют "белый экран", WSOD (white screen of death - белый экран смерти)

Наверняка многие с этим сталкивались - при загрузке страницы сайта (часто после установки какого-то модуля или внесения каких-то правок в код сайта) вы видите белый экран и текст, который уже добавляет браузер чтобы как-то вам помочь понять что происходит, напр.

Server error 500
The website encountered an error while retrieving http://localhost/opencart/2200a1/. It may be down for maintenance or configured incorrectly.

Ошибка 500 чаще всего возникает тогда, тогда есть какая-то серьезная ошибка в коде сайта и интерпретатор не может этот код выполнить.
Эту ошибку бесполезно искать в логе OpenCart или других CMS.
Не поможет так же включение отображения ошибок на сайте:

display_errors = 1;
error_reporting = E_ALL;

Что делать?

Вам нужен лог веб сервера.
Этот лог может находится:
- в настройках вашего хостинга (или целый лог или опция настроек чтобы его включить)
- в в корне сайта, например:

site.com/error.log

- в папке log выше сайта, напр
log/ 
site.com/

- в папке /var/log/apache2
- в других местах на вашем хостинге в зависимости он настроек вебсервера

Если вы не знаете где у вас на хостинге лог вебсервере - спросите у вашего хостера или почитайте документацию по хостингу.

Логов есть 2

Вебсервер обычно ведет 2 лога:
1. Лог доступа. Файл site.com.access.log. Этот лог вам не нужен, в нем информация кто и когда обращался к вашему сайту.
2. Лог ошибок. Файл site.com.error.log. Этот лог вам нужен.

Нашли лог, что дальше?

Вам нужно открыть файл лога в любом текстовом редакторе и посмотреть что там в самом конце.
Там может быть что-то такое:

[Sat Jan 23 21:31:39.991122 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP Fatal error:  Class 'Controllerdesigntheme' not found in /var/www/html/opencart/2200a1/system/engine/action.php on line 36

Это значит что в файле /var/www/html/opencart/2200a1/system/engine/action.php
в строке 36 идет вызов класса Controllerdesigntheme, который не найден.
Имея эту информацию уже легко понять в чем проблема в каком файле, в какой строке и чего именно не хватает.

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

[Sat Jan 23 21:31:39.996914 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP Stack trace:
[Sat Jan 23 21:31:39.996951 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   1. {main}() /var/www/html/opencart/2200a1/admin/index.php:0
[Sat Jan 23 21:31:39.996978 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   2. require_once() /var/www/html/opencart/2200a1/admin/index.php: 22
[Sat Jan 23 21:31:39.996988 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   3. Front->dispatch() /var/www/html/opencart/2200a1/system/framework.php:99
[Sat Jan 23 21:31:39.996995 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   4. Front->execute() /var/www/html/opencart/2200a1/system/engine/front.php:29
[Sat Jan 23 21:31:39.997001 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   5. Action->execute() /var/www/html/opencart/2200a1/system/engine/front.php:34
[Sat Jan 23 21:31:39.997007 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   6. call_user_func_array() /var/www/html/opencart/2200a1/system/engine/action.php:44
[Sat Jan 23 21:31:39.997013 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   7. ControllerStartupRouter->index() /var/www/html/opencart/2200a1/system/engine/action.php:44
[Sat Jan 23 21:31:39.997019 2016] [:error] [pid 29493] [client 127.0.0.1:36811] PHP   8. Action->execute() /var/www/html/opencart/2200a1/admin/controller/startup/router.php:26

Это также важно для понимания как работает OpenCart.

Лог есть, а ошибок там нету.

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

Тэги: 
CAPTCHA
Защита от спама
Target Image