Ошибка 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 то эта ошибка (за очень редкими исключениями) должна быть в логе.
Добавить комментарий