Создаем цифровые решения, которые работают на бизнес
Ошибка 500 означает, что сервер получил запрос, но из-за неожиданной внутренней проблемы не смог его выполнить. Сообщение не называет конкретную причину: одинаковый код может появиться из-за фатальной PHP-ошибки, несовместимого плагина, повреждённого .htaccess, нехватки памяти, неправильных прав или сбоя на уровне хостинга.
Поэтому худшая стратегия — одновременно очищать весь кеш, менять PHP, отключать плагины и перезаписывать файлы. Если сайт заработает, вы не поймёте, что помогло. Если станет хуже, у вас не будет чистой точки возврата. Правильный порядок: зафиксировать симптом, сохранить текущее состояние, прочитать журнал ошибок, проверять по одной гипотезе и после каждого изменения повторять тот же тест.
Если сайт принимает заказы, платежи или заявки, а доступа к файлам и логам нет, безопаснее сразу передать диагностику в рамках технической поддержки сайта. Неудачное «быстрое исправление» рабочего магазина может обойтись дороже исходной ошибки.
По HTTP-стандарту 500 Internal Server Error — общий ответ на неожиданное состояние сервера. Браузер видит результат, но не знает, на каком уровне произошёл сбой.
Запрос к WordPress проходит несколько уровней:
Ошибка на любом этапе может завершиться кодом 500. Поэтому текста в браузере почти никогда не достаточно для диагноза.
| Код | Что обычно означает | Куда смотреть сначала |
|---|---|---|
| 500 | внутренний сбой приложения или конфигурации | PHP/error log, последние изменения, плагины, тема, .htaccess |
| 502 | прокси получил некорректный ответ upstream | PHP-FPM, reverse proxy, контейнер, backend |
| 503 | сервис временно недоступен | обслуживание, перегрузка, лимиты, остановленный процесс |
| 504 | шлюз не дождался ответа | долгий запрос, внешний API, база, timeout |
| 403 | доступ запрещён | права, WAF, правила сервера, блокировка IP |
| 404 | адрес не найден | URL, правила ЧПУ, редиректы, маршрут |
Исходный код ответа можно проверить в DevTools или через проверку HTTP-заголовков. Тестируйте проблемный адрес, а не только главную страницу.
При аварии действуйте по короткой схеме:
Перед редактированием файлов нужна восстанавливаемая копия. Отдельный порядок хранения файлов, базы и тестового восстановления описан в руководстве по резервному копированию сайта.
Масштаб сразу сужает поиск.
/wp-admin/Вероятные причины: фатальная ошибка на раннем этапе загрузки, повреждённая конфигурация, несовместимость PHP, .htaccess, недоступный PHP-FPM или серверный сбой.
Проверяйте тему, шаблон, кеш страниц, плагин оптимизации и код, который выполняется только на frontend.
Причиной может быть административный плагин, импорт, резервное копирование, редактор, нехватка памяти или слишком долгий запрос.
Смотрите шаблон страницы, shortcode, виджет, отдельный запрос к базе, внешний API или повреждённые данные. Отключать весь сайт из-за локальной проблемы не нужно.
Проверяйте AJAX/REST-запрос, память, max_execution_time, размер запроса, PHP-FPM, webhook или ответ платёжного сервиса. В Network браузера зафиксируйте URL, метод, код и время неудачного запроса.
Начинайте с фактов, а не предположений. В панели хостинга нужный файл может называться Error Log, PHP Log, Apache Error Log или Nginx Error Log. WordPress может временно записывать события в wp-content/debug.log.
В wp-config.php, перед финальной строкой об окончании редактирования, добавьте:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false );
@ini_set( 'display_errors', 0 );
Ошибки будут записываться в журнал, но не показываться посетителям. После диагностики верните WP_DEBUG в false, удалите или защитите лог. В нём могут быть пути к файлам, названия таблиц и другие технические сведения.
PHP Fatal error: Uncaught TypeError ...
in /wp-content/plugins/example-plugin/file.php on line 184
Важны:
Fatal error, TypeError, Allowed memory size exhausted;Не исправляйте старый warning в начале большого журнала. Воспроизведите ошибку, обновите лог и смотрите новые записи в тот же момент.
Плагин — главный кандидат, если ошибка возникла после обновления, установки, изменения настроек или переключения PHP.
Через SFTP или файловый менеджер переименуйте папку подозреваемого плагина:
wp-content/plugins/example-plugin
wp-content/plugins/example-plugin.disabled
Если подозреваемого нет, можно временно переименовать весь каталог plugins, но это отключит все обычные расширения. На WooCommerce действие может затронуть корзину, оплату, доставку, письма и интеграции. После возврата имени включайте плагины по одному.
Каталог wp-content/mu-plugins загружается автоматически и не отключается через обычный список. Если стандартные плагины отключены, а ошибка осталась, проверьте MU-плагины и файлы object-cache.php, advanced-cache.php, db.php.
Неизвестный код, новые администраторы, чужие ссылки или мобильные редиректы говорят уже о возможном заражении. Выполните отдельную проверку сайта на вирусы и замените доступы к хостингу, SFTP, базе и WordPress.
Тема может упасть после обновления, ручного изменения functions.php, смены PHP или вызова функции плагина, который больше не активен.
Если WordPress Recovery Mode отправил письмо, войдите по защищённой ссылке и отключите проблемную тему. Если письма нет, переименуйте папку активной темы через SFTP. WordPress попробует перейти на установленную стандартную тему.
До проверки убедитесь, что стандартная тема установлена. Не удаляйте активную тему и не заменяйте её случайным архивом: сохраните копию, версию, локальные изменения и связь с дочерней темой.
Если падает один шаблон, сравните его с последней рабочей версией. Частые причины:
.htaccessНа Apache синтаксическая ошибка или запрещённая директива в .htaccess может вызвать 500 ещё до запуска WordPress.
Безопасная проверка:
.htaccess..htaccess.old.Не копируйте чужой .htaccess целиком. В нём могут быть правила другого домена, PHP handler, кеш, защита или директивы, запрещённые вашим сервером.
Nginx не использует .htaccess. Там проверяют virtual host, error_log, PHP-FPM и reverse proxy.
Allowed memory size exhausted прямо говорит, что процесс исчерпал память. Но это не означает, что достаточно увеличить лимит. Память может съедать цикл, тяжёлый импорт, большое изображение, запрос или конфликт.
Временное увеличение помогает диагностике, однако сначала зафиксируйте текущие значения. На управляемом хостинге реальный лимит может задаваться через php.ini, .user.ini, панель, pool PHP-FPM или политику тарифа.
Похожие записи:
Maximum execution time exceeded — процесс работал слишком долго;upstream timed out — сервер не дождался PHP-FPM;server reached max_children — все PHP-процессы заняты;MySQL server has gone away — потеряно соединение с базой;No space left on device — закончилось место или inode.Регулярное исчерпание лимитов требует профилирования запроса, cron, плагина, базы и тарифа. Надёжный хостинг для сайта важен, но более мощный сервер не исправляет бесконечный цикл в коде.
Старый плагин может использовать функцию, удалённую из новой PHP. Новый плагин может требовать версию, которой на сервере ещё нет. Сбой часто начинается после переключения в панели или автоматического обновления окружения.
Проверьте:
Не переключайте production наугад. Воспроизведите сайт на staging, обновите несовместимый компонент и протестируйте основные сценарии. Временный откат может вернуть доступ, но не должен оставлять сайт на неподдерживаемой ветке.
Такое бывает после ручной загрузки, распаковки архива, переноса или команды от другого системного пользователя. PHP не может прочитать файл, записать кеш или создать временную папку.
Не ставьте 777 как универсальное решение. Это расширяет доступ и скрывает проблему owner/group. Конкретные права зависят от сервера; часто используются 644 для файлов и 755 для каталогов, но ориентироваться нужно на правила хостинга.
Сравните проблемный файл с соседними рабочими и найдите точный Permission denied в журнале.
Незавершённое обновление, ошибка диска, неполное копирование или заражение могут повредить ядро. До переустановки убедитесь, что причина не в wp-content и не в конфигурации.
Контролируемый порядок:
wp-content и wp-config.php;Если файлы снова меняются после замены, ищите заражение или процесс, который их перезаписывает.
Когда код не менялся, а 500 появляется волнами или под нагрузкой, проверяйте инфраструктуру:
WAF может возвращать 500 или 403 только для конкретного payload, например при сохранении страницы с кодом. Не отключайте защиту глобально. Найдите ID правила в журнале и создайте точечное исключение после проверки запроса.
Если неясно, правильно ли отвечают домен, DNS и сервер, пройдите проверку домена, хостинга и сервера. Ошибку сертификата не стоит маскировать под 500 — для неё есть отдельный гайд про SSL-сертификат и HTTPS.
| Симптом | Вероятная зона | Первая проверка |
|---|---|---|
| 500 после обновления плагина | плагин или PHP | error log, отключение плагина |
белый экран после правки functions.php |
синтаксис темы | PHP log, откат одного файла |
| главная работает, внутренние URL — 500 | rewrite или .htaccess |
переименование .htaccess |
| 500 только при импорте | память, timeout, размер пакета | PHP log, лимиты, размер порции |
| 500 во время checkout | оплата, webhook, сессия | WooCommerce log, PHP log, Network |
| сбой в часы пик | ресурсы или PHP-FPM | CPU/RAM/I/O, max_children |
| то работает, то падает | несколько узлов или upstream | логи узлов, CDN, health checks |
| сбой после переноса | PHP, права, пути, env | версии, owner/group, rewrite |
Для магазина недостаточно вернуть главную. Проверьте:
Не повторяйте реальную оплату без контрольного плана. Используйте sandbox платёжной системы или документированный тестовый заказ и сразу проверяйте логи.
Вы потеряете причинно-следственную связь и не будете знать, что откатывать.
Абсолютные пути и структура каталогов полезны не только администратору. Записывайте ошибки в закрытый лог.
Переименование обратимо. Удаление плагина, темы или базы — нет.
777Это небезопасная маскировка проблемы владельца файлов.
Сначала сохраните текущую базу, определите окно инцидента и спланируйте сохранение новых транзакций.
Оно добавляет новые переменные. Сначала изолируйте причину и верните сервис, затем обновляйте контролируемо.
Код 200 на главной — только начало. Проверьте:
/wp-admin/, вход и сохранение записи;После восстановления запустите проверку скорости сайта. Если 500 исчезла, но TTFB вырос или сервер продолжает периодически падать, первопричина могла остаться.
Обращайтесь за помощью, если:
Подготовьте URL, время сбоя, скриншот, последние изменения, доступ к хостингу и WordPress, а также фрагмент лога без паролей и ключей. Это превращает расплывчатую проблему в конкретную проверку. Для контролируемого восстановления свяжитесь с BB STUDIO — локализуем причину, вернём сайт в работу, протестируем критические сценарии и зафиксируем профилактику.
WP_DEBUG_DISPLAY не показывает ошибки посетителям;.htaccess сохранён перед изменением;
Давайте вместе создадим что-то потрясающее