Рубрики
Backend

Ошибка 500 — решение проблемы

Недавно ко мне обратились из компании, занимающейся созданием сайтов, за консультацией. Были жалобы на нестабильную работу сайта. Нестабильность заключалась в том, что при сохранении публикации сайт вешался. Решение проблемы, когда возникает ошибка 500, я напишу далее. Я представлю как универсальные методы решения проблемы, которые помогут владельцам сайтов с любыми системами управления, так и направленные на решение проблемы пользователей WordPress.

Почему возникает ошибка 500(Internal Server Error)?

  • Проблема в файле .htaccess;
  • Некорректная работа с CGI скриптами;
  • Нехватка памяти;
  • Нехватка времени выполнения скрипта;
  • Некорректная работа плагинов;
  • Повреждение файлов.

Решение проблемы с файлом .htaccess:

Самой распространенной проблемой возникновения ошибки 500(Внутренняя ошибка сервера) является наличие в файле .htaccess команд, которые не поддерживаются сервером, либо просто неверный синтаксис команд.

Решение проблемы некорректной работа с CGI скриптами:

  • Скрипты формируют неверные заголовки и необходимо смотреть логи, которые доступны из панели управления хостингом в разделе «Статистика»;
  • Скрипты необходимо загружать на сервер по FTP  в режиме ASCII, чтобы окончания строк в скриптах были в формате UNIX — \n, а не в формате Windows — \n\r;
  • Скрипты и папки должны быть доступны для записи только владельцу, то есть необходимо выставить права — 0755 (drwxr-xr-x).

Решение проблемы нехватки памяти:

Иногда проблема может возникать, если вы превышаете лимит выделенной памяти(PHP memory limit).

Если у вас возникает ошибка 500 при переходе в админку, при загрузке изображения или при публикации записи, то скорее всего вам поможет увеличение лимита памяти доступной PHP. Это можно сделать отредактировав существующий файл php.ini(посмотреть где он находится можно с помощью функции phpinfo(), строка — Loaded Configuration File), либо создав свой файл в корне сайта(для пользователей WordPress в wp-admin).

В php.ini необходимо написать / исправить строку: ;

memory = 64MB

Владельцы WordPress могут поступить более удобным для них образом — открыть файл wp-config.php, который лежит в корне сайта, и добавить туда следующую строку:

define('WP_MEMORY_LIMIT', '64M');

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

Решение проблемы нехватки времени выполнения скрипта:

Так же, как в случае с памятью, у вас может возникнуть ситуация, когда скрипт просто не успел отработать за то время, которое ему для этого отводится. По умолчанию время выполнения скрипта ограничивается 30-ю секундами. Способы увеличения лимита далее.

Аналогично предыдущему методу работаем с php.ini:

max_execution_time = 60

Использование функции PHP — можно написать следующий код вначале какого-либо PHP файла, который запускается при возникновении проблемы(например в index.php):

ini_set( 'max_execution_time', 60 ); // 60 секунд

Работа с .htaccess:

php_value max_execution_time 60

Пользователи WordPress могут использовать плагин — WP Maximum Execution Time Exceeded.

Решение проблемы с помощью отключения плагинов:

Бывает так, что ошибка 500 возникает из-за того, что в самом плагине / модуле существует какая-либо ошибка, чаще логическая, которая приводит к негативным последствиям. Выявить «испорченный» плагин можно таким способом:

  • Отключите все плагины;
  • Включите первый плагин, который до этого работал вместе со всеми;
  • Производите действия, которые ранее приводили к ошибке;
  • Если ошибка не возникает, отключайте этот плагин и включайте следующий и т.д. пока не выявите «брак».

Если вы пользователь WordpPress и не можете зайти в админку, так как возникает ошибка 500, зайдите на сервер по FTP и переименуйте папку wp-content/plugins, в этом случае плагины автоматически отключатся, когда вы в следующий раз обратитесь к админке и если проблема была в каком-то из них, то вы войдете в админку. Далее надо будет обратно переименовать папку plugins и работать по вышеуказанной схеме.

Решение проблемы с повреждением файлов:

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

Если после этой процедуры все заработает, то стоит задуматься о том, каким образом файл системы мог быть поврежден.

Что делать, если ничего не помогло?

Если ничего из вышеперечисленного не помогло, это значит, что вам все же придется либо самому, либо с помощью техподдержки хостинга анализировать логи и искать проблему более тщательно. Либо можно обратиться за помощью к профессионалам.