Помилка 500 Internal Server Error означає, що сервер отримав запит, але не зміг його обробити через збій на боці сайту. Сам код помилки нічого не каже про причину — її потрібно знайти в журналах.
Крок 1. Подивіться журнал помилок
Точна причина майже завжди записана в журналі помилок вебсервера або PHP:
- ISPmanager — розділ Сайти → Журнали, файл
error.log. Детальніше — у статті «Як переглянути журнали сайту». - cPanel — розділ Metrics → Errors. Див. «Як переглянути журнали та статистику сайту в cPanel».
- VPS — зазвичай
/var/log/nginx/error.logабо/var/log/apache2/error.log, а також журнал PHP-FPM.
Відкрийте сторінку з помилкою ще раз і подивіться останні рядки журналу — там буде файл і рядок, на якому стався збій.
Найчастіші причини
Помилка у файлі .htaccess
Одна неправильна директива в .htaccess ламає весь сайт. У журналі буде запис на кшталт Invalid command або RewriteRule: bad flag delimiters. Тимчасово перейменуйте файл на .htaccess.bak: якщо сайт запрацював — проблема в ньому. Перевірити синтаксис можна нашим валідатором .htaccess.
Фатальна помилка PHP
Записи PHP Fatal error, Uncaught Error, Call to undefined function означають помилку в коді. Часто це трапляється після оновлення плагіна чи теми або після зміни версії PHP: старий код не сумісний з PHP 8.x. Поверніть попередню версію PHP або оновіть проблемний модуль.
Не вистачає пам'яті
Allowed memory size of ... bytes exhausted — скрипту не вистачило ліміту memory_limit. Збільште його в налаштуваннях PHP (наприклад, до 256M) або знайдіть плагін, який споживає забагато пам'яті.
Неправильні права на файли
Якщо права занадто широкі (наприклад, 777), частина серверів відмовляється виконувати скрипти з міркувань безпеки. Рекомендовані права: 755 для каталогів і 644 для файлів. На VPS:
find /var/www/site -type d -exec chmod 755 {} \;
find /var/www/site -type f -exec chmod 644 {} \;
Відсутнє розширення PHP
Помилки на кшталт Class "PDO" not found або Call to undefined function mb_strlen() означають, що потрібне розширення PHP вимкнене. Увімкніть його в налаштуваннях PHP панелі керування.
Якщо журнал порожній
Увімкніть показ помилок тимчасово — тільки на час діагностики. Для WordPress у wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
Помилки з'являться у файлі wp-content/debug.log. Після виправлення поверніть WP_DEBUG у false.
Якщо не вдається знайти причину, створіть тікет у підтримці та вкажіть адресу сторінки й час, коли з'явилася помилка, — ми перевіримо журнали сервера.