Ошибка 500 Internal Server Error — одна из самых неприятных проблем, с которыми сталкиваются разработчики и администраторы сайтов на WordPress. Она не дает понять, в чем именно дело, поскольку браузер выдает лишь общее сообщение об ошибке сервера. В этой статье подробно разберем, как найти причину появления ошибки 500 и как ее исправить, используя как стандартные инструменты WordPress, так и плагины и примеры кода.
Основные причины ошибки 500 в WordPress
Ошибка 500 обычно связана с внутренними проблемами на сервере. В контексте WordPress наиболее частые причины:
- Ошибки в файле
.htaccessили неправильные правила перезаписи; - Проблемы с плагинами — конфликт, ошибка в коде или несовместимость;
- Ошибки в теме оформления (theme);
- Перегрузка PHP-памяти — часто из-за больших скриптов или плагинов;
- Неправильные права доступа к файлам и папкам;
- Проблемы с версией PHP или её настройками;
- Ошибки в пользовательском коде, если вы добавляли кастомные функции.
Чтобы эффективно устранить ошибку, нужно провести поэтапную диагностику.
Включение отладки WordPress для выявления ошибки
Первая и главная рекомендация — включить режим отладки WordPress. Для этого в файле wp-config.php добавьте или измените следующие строки:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Это активирует логирование всех ошибок в файл wp-content/debug.log, при этом ошибки не будут выводиться на экран, что безопаснее для рабочего сайта.
После включения отладки повторите действие, вызывающее ошибку 500, и затем проверьте лог ошибок. Там обычно указывается файл и строка, где возникла проблема.
Проверка файла .htaccess и восстановление стандартных правил
Файл .htaccess может содержать некорректные правила, вызывающие ошибку 500. Чтобы проверить это:
- Переименуйте текущий
.htaccessв.htaccess_old. - Зайдите в админ-панель WordPress в раздел Настройки – Постоянные ссылки.
- Просто нажмите кнопку «Сохранить изменения», чтобы WordPress создал новый стандартный
.htaccess.
Если ошибка исчезла, причина была в старом файле. Можно сравнить старый и новый файлы, чтобы найти проблемную строку.
Отключение плагинов для выявления конфликтов
Частая причина ошибки 500 — несовместимый или сломанный плагин. Чтобы проверить:
- Подключитесь к сайту по FTP или через файловый менеджер хостинга.
- Переименуйте папку
wp-content/pluginsвplugins_old, чтобы отключить все плагины. - Проверьте, исчезла ли ошибка.
- Если да, верните папку обратно и отключайте плагины по одному, чтобы найти виновника.
Для удобства можно использовать плагин Clearfy Pro, который позволяет управлять плагинами и отключать их быстро из админки.
Увеличение лимита памяти PHP в WordPress
Если ошибка вызвана нехваткой памяти, можно увеличить лимит в wp-config.php:
define('WPSHAB_increase_php_memory_limit', function() {
if (!defined('WP_MEMORY_LIMIT')) {
define('WP_MEMORY_LIMIT', '256M');
}
});
WPSHAB_increase_php_memory_limit();
Также можно обратиться в панель управления хостингом и проверить настройки PHP. Иногда лимит памяти задается на уровне сервера.
Проверка прав доступа к файлам и папкам
Неправильные права на файлы и папки могут привести к ошибке 500. Рекомендуемые значения:
- Папки — 755;
- Файлы — 644;
- Файл
wp-config.php— 600 или 640.
Права можно проверить и изменить через FTP или SSH командой chmod. Например:
chmod 755 wp-content
chmod 644 wp-config.php
Использование плагина WP Debugging для упрощенной отладки
Если не хотите вручную редактировать файлы, установите плагин WP Debugging. Он автоматически включает режим отладки и логирования, а также может выводить подробные ошибки на экран в безопасном режиме.
Пример кастомной функции для логирования ошибок в отдельный файл
Если нужна более гибкая диагностика, можно добавить в functions.php темы следующий код для логирования ошибок PHP в отдельный файл:
function wpshab_log_php_errors($errno, $errstr, $errfile, $errline) {
$log_entry = date('Y-m-d H:i:s') . " | Error: $errstr in $errfile on line $errline\n";
error_log($log_entry, 3, WP_CONTENT_DIR . '/php_errors.log');
return false; // Передать стандартному обработчику
}
set_error_handler('wpshab_log_php_errors');
Этот код поможет отследить даже предупреждения и ошибки, которые могут косвенно вызывать 500 ошибку.
Как проверить логи сервера и что искать
На большинстве хостингов доступен просмотр логов ошибок Apache или Nginx. Обычно они находятся в корне аккаунта или доступны через панель управления хостингом. В логах ищите записи, совпадающие с временем возникновения ошибки 500. Это могут быть ошибки PHP, ошибки модуля mod_security, превышение лимитов и др.
Если вы используете кэш и CDN (например, Cloudflare), временно отключите их для исключения влияния на ошибку.
Дополнительные рекомендации и полезные плагины
- Health Check & Troubleshooting — плагин для диагностики проблем, позволяет в безопасном режиме отключать темы и плагины для проверки;
- Query Monitor — для анализа запросов к базе данных и выявления проблем в коде;
- WP-Optimize — для оптимизации базы данных, что может снизить нагрузку и предотвратить ошибки;
- Clearfy Pro — для комплексной оптимизации и управления сайтом, включая отключение ненужных скриптов и плагинов.
Использование этих инструментов поможет не только устранить текущую ошибку, но и предотвратить появление подобных в будущем.