Вирішення проблем хостингу Практика

Помилка 500 на хостингу: як перестати панікувати і знайти причину за 15 хвилин

Спеціаліст у дата-центрі виконує діагностику сервера для усунення помилки 500 на хостингу

Уявіть: п'ятниця, 18:00, ви нарешті збираєтесь закрити ноутбук - і тут клієнт скидає скріншот. Білий екран, лаконічний напис "500 Internal Server Error". Серце падає кудись у район шлунка. Телефон починає вібрувати. Ще один клієнт. Ще один скріншот. Знайомо? Помилка 500 - це як лихоманка у людини: вона сигналізує, що щось не так, але не каже, що саме. І поки ви не поставите діагноз, лікування буде навмання. Давайте розберемося, як системно шукати корінь проблеми, а не тикати пальцем у небо.

Чому 500-та помилка така підступна

Більшість HTTP-помилок досить красномовні. 404 - сторінки немає. 403 - доступ заборонено. 502 - шлюз не відповідає. А ось 500 Internal Server Error - це, по суті, сервер каже: "Мені погано, але я не скажу чому". Ні конкретної причини, ні підказки. Просто біль.

Причин може бути десятки:

  • Зламаний .htaccess після невдалого редагування або оновлення плагіна
  • Перевищення лімітів пам'яті PHP на shared-хостингу
  • Синтаксична помилка у коді після "швидкого фіксу" о третій ночі
  • Несумісність версій PHP з якимось старим плагіном чи темою
  • Проблеми з правами доступу до файлів або директорій

І найгірше - помилка може з'являтися спорадично. Вранці все працює, ввечері - лежить. Ви перезавантажуєте сервер, сайт оживає на годину, а потім знову падає. Це не магія. Це просто симптом, який потрібно правильно прочитати.

Підприємець шукає причини 500 internal server error на ноутбуці віддалено
Підприємець шукає причини 500 internal server error на ноутбуці віддалено

Перші 5 хвилин: що робити, коли все горить

Не чіпайте код. Серйозно. Я бачив, як люди у паніці починають видаляти файли, відкочувати бекапи, перевстановлювати CMS - і перетворюють одну проблему на п'ять. Ось чіткий алгоритм перших дій:

  1. Відкрийте логи помилок - у cPanel це Error Log, у Plesk - Logs. Через SSH: tail -f /var/log/apache2/error.log або аналогічний шлях для nginx. Лог - це ваша головна зброя.
  2. Перевірте, чи помилка на всіх сторінках - якщо тільки на одній, проблема локалізована: конкретний скрипт, шаблон або запит до бази.
  3. Подивіться, що змінилось - оновлення плагіна? Редагування файлу? Зміна версії PHP у панелі? 90% випадків помилка 500 виникає після того, як хтось щось "трошки поправив".
  4. Перейменуйте .htaccess - просто додайте до імені _backup. Якщо сайт ожив - ви знайшли винуватця за 30 секунд.
  5. Перевірте використання ресурсів - у панелі хостингу подивіться на CPU, RAM, кількість процесів. Можливо, ви просто вперлися у ліміт.

Правило номер один: спочатку дивимось у логи, потім робимо будь-що інше. Без логів ви - хірург із зав'язаними очима.

Головні винуватці: розбираємо топ-причини з прикладами

За 15 років роботи з хостингом я бачив сотні випадків помилки 500. І знаєте що? Приблизно 80% з них вкладаються у п'ять категорій. Ось вони з реальними прикладами та рішеннями:

Причина Як виглядає в логах Рішення Час на фікс
Битий .htaccess Invalid command або Syntax error Перейменувати файл, створити чистий 1-2 хв
Ліміт пам'яті PHP Allowed memory size exhausted Збільшити memory_limit у php.ini або ini_set 3-5 хв
Помилка у коді Parse error або Fatal error з вказівкою рядка Виправити синтаксис або відкотити зміни 5-15 хв
Права доступу Permission denied chmod 644 для файлів, 755 для директорій 2-5 хв
Несумісність PHP Uncaught Error або Deprecated function Змінити версію PHP або оновити код 10-30 хв

Один мій колега три дні шукав причину 500-ї помилки на WordPress-сайті клієнта. Виявилося, що безкоштовний плагін для SEO додав у .htaccess рядок з директивою, яку Apache на цьому хостингу просто не розумів. Три дні. А потрібно було лише заглянути у error.log.

Розробник виправляє помилку 500 WordPress за комп'ютером у студії з кавою
Розробник виправляє помилку 500 WordPress за комп'ютером у студії з кавою

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

Ось про що рідко говорять у туторіалах: іноді помилка 500 - це не ваша вина. Взагалі. Сервер провайдера може бути перевантажений. Модуль Apache може "впасти". Оновлення на рівні ОС сервера може зламати сумісність.

"Shared hosting - це комунальна квартира. Ваш сусід запустив криво написаний крон, і тепер увесь сервер ледве дихає. А ви думаєте, що проблема у вашому коді." - Дмитро Котенко, DevOps-інженер з 12-річним досвідом

Як зрозуміти, що проблема на стороні хостера?

  • Помилка з'являється і зникає хаотично, без жодних змін з вашого боку
  • Логи або порожні, або показують лише загальний "Premature end of script headers"
  • Інші сайти на цьому ж акаунті теж лежать
  • Статус-сторінка провайдера показує інциденти

У такому разі - пишіть у підтримку. Але не просто "у мене 500", а з конкретикою: час виникнення, URL, витяг з логів, що ви вже перевірили. Тікети з такою інформацією вирішуються в 3-4 рази швидше. Перевірено на власному досвіді.

Профілактика: як не зустрічатися з 500-ю помилкою щомісяця

Знаєте різницю між адміністратором-новачком та досвідченим? Новачок гасить пожежі. Досвідчений робить так, щоб вони не виникали. Ось що реально працює:

  1. Увімкніть логування помилок PHP - у wp-config.php або php.ini. Завжди. Навіть на продакшені. Без логів ви сліпі.
  2. Тестуйте оновлення на staging - особливо великі: WordPress, WooCommerce, мажорні плагіни. Оновлення на бойовому сервері без тестування - це російська рулетка.
  3. Моніторте аптайм - сервіси на кшталт UptimeRobot (безкоштовний) або Better Uptime перевіряють сайт кожні 5 хвилин. Ви дізнаєтесь про проблему раніше за клієнтів.
  4. Тримайте бекап .htaccess та wp-config.php окремо - ці два файли ламаються найчастіше. Мати їхню чисту копію - це як тримати запасний ключ від квартири у сусіда.
  5. Не ставте 20 плагінів "на всяк випадок" - кожен плагін - це потенційна точка відмови. Менше коду - менше шансів на помилку.

Правильно налаштований моніторинг + staging-середовище скорочують кількість інцидентів з помилкою 500 на 70-80%. Це не магічні цифри - це статистика з реальних проєктів, де я допомагав налаштовувати інфраструктуру.

Коли 500-та помилка - це симптом чогось більшого

Іноді помилка 500, що постійно повертається - це не баг, а знак. Знак того, що ваш проєкт переріс свій хостинг. Якщо ви щомісяця стикаєтесь з лімітами пам'яті, якщо кожне оновлення WooCommerce кладе сервер, якщо ваш shared-тариф за $3 обслуговує магазин з 10 000 товарів - проблема не в .htaccess. Проблема в архітектурі.

Переїзд на VPS або хмарний хостинг не вирішить кривий код. Але він дасть вам головне - контроль. Доступ до повних логів, можливість налаштувати PHP під свої потреби, виділені ресурси замість "скільки залишилось від сусідів". І якщо помилка 500 виникне знову - ви знайдете її за хвилини, а не за дні.

Запитайте себе чесно: ви лагодите симптоми чи вирішуєте проблему? Бо сервер, як і організм - довго терпить, а потім падає одразу і серйозно. І зазвичай це відбувається в п'ятницю о 18:00.