Как исправить ошибку 500 Internal Server Error в WordPress

Ошибка 500 Internal Server Error в WordPress обычно означает, что на сервере что-то сломалось, но сам сайт не показывает подробностей. Для владельца это неприятный сценарий: главная страница не открывается, админка может быть недоступна, а причина может скрываться в плагине, теме, повреждённом .htaccess или ограничениях хостинга. Хорошая новость в том, что в большинстве случаев проблему можно найти по короткому плану проверки, не перебирая всё подряд.

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

С чего начать диагностику

Перед любыми правками сделайте резервную копию файлов и базы данных, если сайт ещё доступен по FTP, SSH или через панель хостинга. Это особенно важно, если вы собираетесь переименовывать папки плагинов, менять тему или редактировать .htaccess. Ошибка 500 часто лечится простой правкой, но одна неверная настройка может добавить новую проблему.

Дальше проверьте, где именно возникает сбой:

  • сайт не открывается вообще;
  • не работает только админка WordPress;
  • ошибка появляется после установки или обновления плагина;
  • проблема началась после смены темы или правок в коде;
  • сайт падает после переноса на другой хостинг или изменения версии PHP.

Этот контекст помогает быстрее выбрать правильную ветку проверки. Например, если ошибка появилась сразу после активации плагина, почти всегда стоит начинать именно с него, а не с базы данных или кэша.

Проверьте плагины: это самая частая причина

Если у вас есть доступ к файловой системе, самый быстрый способ исключить плагины — временно отключить их все. Для этого переименуйте папку wp-content/plugins в, например, plugins-old. WordPress перестанет видеть установленные плагины и загрузится без них.

Если сайт после этого открылся, причина почти наверняка в одном из плагинов. Верните папке исходное имя, а затем отключайте плагины по одному, пока ошибка не появится снова. Так вы найдёте конкретный виновник. На практике чаще всего ломают сайт:

  • плагины, которые давно не обновлялись;
  • расширения, несовместимые с текущей версией PHP;
  • конфликтующие плагины кэша, безопасности или оптимизации;
  • самописные плагины с ошибкой в коде.

Если доступа к файловой системе нет, можно попробовать войти в админку и отключить плагины оттуда. Но при ошибке 500 админка часто тоже недоступна, поэтому переименование папки обычно надёжнее и быстрее.

Если плагины не виноваты, проверьте тему

Следующий шаг — исключить активную тему. Ошибка 500 нередко появляется после обновления темы или установки дочерней темы с ошибкой в functions.php. Чтобы проверить это, временно переключитесь на стандартную тему WordPress, например Twenty Twenty-Four или другую установленную тему по умолчанию.

Если админка недоступна, можно переименовать папку активной темы в wp-content/themes. Тогда WordPress попытается перейти на доступную стандартную тему. Если после этого сайт заработал, проблема в коде темы или в её несовместимости с текущей версией WordPress/PHP.

Особое внимание стоит уделить таким ситуациям:

  • в тему вручную добавляли код в functions.php;
  • обновление темы прошло не полностью;
  • дочерняя тема наследует ошибку из родительской;
  • тема использует устаревшие функции PHP.

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

Проверьте .htaccess, если сайт на Apache или LiteSpeed

Повреждённый или слишком агрессивный .htaccess — ещё одна частая причина ошибки 500. Это особенно актуально для сайтов на Apache и LiteSpeed. Один неверный директивный блок, неправильный редирект или правило из старого плагина может полностью положить сайт.

Для проверки временно переименуйте файл .htaccess в корне сайта, например в .htaccess-old. После этого откройте сайт снова. Если он заработал, проблема была в правилах внутри файла.

Дальше можно создать новый чистый .htaccess для WordPress. Для обычной установки без дополнительных правил он выглядит так:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

После замены проверьте главную страницу и несколько внутренних URL. Если сайт работает, а старые правила были нужны для редиректов или кэша, добавляйте их обратно по одному и каждый раз проверяйте результат. Так проще найти проблемный блок.

Когда проблема в лимитах хостинга или PHP

Если плагины, тема и .htaccess не дали ответа, причина может быть на стороне хостинга. Ошибка 500 часто появляется, когда серверу не хватает памяти, времени выполнения или когда PHP работает с неподходящей версией.

На практике стоит проверить три вещи:

  • версию PHP — некоторые старые плагины и темы не работают на новых версиях, а старые версии PHP уже могут не поддерживаться хостингом;
  • лимит памяти — если сайт тяжёлый, WordPress может упереться в недостаток памяти;
  • ограничения хостинга — лимиты на процессы, время выполнения скрипта, количество запросов к базе и другие серверные ограничения.

Если у вас есть доступ к wp-config.php, можно временно увеличить лимит памяти WordPress. Это не лечит все варианты ошибки 500, но помогает, если сбой связан именно с нехваткой памяти. Добавьте строку выше комментария /* That's all, stop editing! Happy publishing. */:

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

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

Как читать журнал ошибок и не гадать вслепую

Если хостинг показывает error log, это самый полезный источник. В журнале обычно видно, какой файл вызвал сбой и на какой строке возникла проблема. Для WordPress это особенно полезно, когда сайт падает без видимого сообщения.

Включать отладку в WordPress можно, но делать это лучше аккуратно и только на время диагностики. В wp-config.php добавьте или измените такие строки:

define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);

После этого WordPress будет писать ошибки в файл wp-content/debug.log, а не показывать их посетителям. Это безопаснее для боевого сайта. Когда найдёте причину, отладку лучше выключить, чтобы не засорять лог и не раскрывать технические детали наружу.

Если в логе фигурирует конкретный плагин или тема, вы уже почти у цели. Если там ошибки вида Allowed memory size exhausted, значит, проблема в памяти. Если встречаются сообщения о синтаксической ошибке, ищите недавно изменённый файл или обновление, которое прошло некорректно.

Что делать, если сайт не открывается даже после всех проверок

Если вы отключили плагины, сменили тему, проверили .htaccess и не нашли явную причину, не стоит бесконечно перебирать настройки наугад. На этом этапе обычно помогает связка из журнала ошибок и поддержки хостинга. Попросите проверить:

  • ошибки PHP в момент запроса;
  • лимиты памяти и времени выполнения;
  • блокировки на уровне mod_security или аналогичных фильтров;
  • ошибки файловых прав и владельца файлов;
  • сбой после обновления PHP или веб-сервера.

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

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

Короткий порядок действий, если нужен быстрый результат

Если сайт уже лежит и нужно быстро сузить причину, действуйте так:

  1. Сделайте резервную копию, если это ещё возможно.
  2. Переименуйте папку wp-content/plugins и проверьте сайт.
  3. Если не помогло, проверьте активную тему, переключившись на стандартную.
  4. Переименуйте .htaccess и создайте чистый файл заново.
  5. Посмотрите error log или включите WP_DEBUG_LOG.
  6. Проверьте версию PHP, лимит памяти и ограничения хостинга.

Такой порядок обычно быстрее всего показывает источник ошибки 500 в WordPress. В большинстве случаев проблема находится в одном из четырёх мест: плагин, тема, правила .htaccess или серверные ограничения. Если идти по этой цепочке последовательно, можно вернуть сайт в работу без лишних экспериментов.

⭐⭐⭐⭐⭐