Помилка 500 у WordPress: як знайти та виправити проблему

wordpress logoЯкщо ви опинилися на цій сторінці, ймовірно, ви є власником сайту на WordPress, і зараз ваш сайт видає помилку 500 – Internal Server Error або замість вашого сайту відображається просто біла сторінка.

Це типова помилка для будь-яких сайтів, незалежно від типу хостингу який ви викорстовуєте для розміщення WordPress-сайту, але причин її появи може бути досить багато. Проблема може виникнути після встановлення або оновлення плагіна чи теми, через помилки в коді, неправильні налаштування сервера, недостатні ресурси, несумісність рушія WordPress чи одного з його компонентів з поточною версією PHP або через пошкодження файлів WordPress.

Найнеприємніше в цій помилці те, що повідомлення 500 – Internal Server Error саме по собі практично нічого не говорить про причину проблеми. Ця помилка свідчить лише про те, що під час обробки запиту сталася внутрішня помилка, через яку обробка запиту була завершена аварійно, але помилка Internal Server Error не вказує, що саме її спричинило.

У цій статті ми розберемо основні причини виникнення помилки 500 – Internal Server Error у WordPress, опишемо методологію діагностики та пошуку причин проблеми, та розглянемо способи її виправлення.

Важливо: ця інструкція не охоплює встановлення та налаштування веб-сервера і PHP. Передбачається, що веб-сервер і PHP на вашому сервері вже встановлені, налаштовані належним чином та коректно обробляють PHP-запити.

1. Як зрозуміти, що сайт повертає саме помилку 500

Спершу, переконайтесь що ваш сайт дійсно повертає помилку 500 – Internal Server Error. Для цього, залежно від ОС, яка встановлена на вашому локальному комп’ютері виконайте команду наведену нижче замінивши, https://YOUR-WP-WEBSITE.COM на повне посилання до вашого сайту на WordPress:

(Windows):

curl.exe -s -o NUL -w "%{http_code}\n" https://YOUR-WP-WEBSITE.COM

(Linux / macOS / BSD):

curl -s -o /dev/null -w "%{http_code}\n" https://YOUR-WP-WEBSITE.COM

Ця команда звернеться до сервера на якому розміщується ваш WordPress веб-сайт та поверне код відповіді від сервера. Якщо обробка запиту до сайту дійсно завершується помилкою, у відповіді ви отримаєте:

500

Якщо ви отримали код-відповіді “301” або “302”, переконайтесь що ви вказали правильний протокол (http:// або https://) та домен, на якому працює ваш сайт.

Якщо ви отримали код відповіді “200”, але замість вашого сайту відображається інша сторінка або біла сторінка, перевірте вміст домашньої папки сайту. Зокрема, переконайтеся, що там немає файлів index.htm або index.html, які відповідно до налаштувань веб-сервера можуть мати пріоритет над index.php. Якщо такі файли не потрібні, видаліть або перейменуйте їх і перевірте роботу сайту повторно.

Важливо: не видаляйте файл index.php, цей файл є частиною WordPress і його видалення призведе до неправильної роботи сайту.

Ви можете перевірити код відповіді й іншим способом, через сторонні сервіси або використовуючи інструменти веб-майстра в браузері.

2. Як знайти та виправити причину помилки 500 – Internal Server Error в WordPress

Ви переконались, що обробка запиту до сайту завершується помилкою 500. Але що робити далі ? Як діагностувати, що саме викликає помилку 500 та білу сторінку в WordPress ? Які кроки необхідно виконати, щоб вирішити проблему ?

Як ми писали раніше, цю помилку можуть викликати налаштування сервера, PHP та самого сайту. Нижче ми наведемо покрокову інструкцію для діагностування проблеми і вирішення “500 – Internal Server Error”:

2.1. Перевірка роботи PHP та налаштувань .htaccess

Створіть файл з назвою phptest.php з таким контентом:

<?php
phpinfo();
?>

та розмістіть його в кореневій папці (домашній папці) сайту.

Інформація: ви можете створити файл на локальному комп’ютері, використовуючи редактор файлів, на кшталт “Notepad”, і завантажити його на сервер по FTP або створити файл одразу на сервері використовуючи “Менеджер файлів” або іншим зручним для вас способом.

Відкрийте у браузері посилання:
https://your-wp-website.com/phptest.php

У відповідь ви маєте отримати сторінку, на який буде наведена детальна інформація про PHP вашого сайту:

Якщо так і є, перейдіть до наступного кроку “Активація режиму діагностики у WordPress”.

У випадку, якщо ви так само отримали помилку 500 – Internal Server Error, це може вказувати на проблеми з налаштуваннями в файлі .htaccess, що є службовим файлом веб-сервера Apache та LiteSpeed. Веб-сервери Apache та LiteSpeed зазвичай використовуються на серверах SSD хостингу (віртуального хостингу). Якщо на вашому сервері інший веб-сервер і ви отримуєте помилку 500, це свідчить про проблеми налаштування самого PHP або вашого веб-серверу і в такому випадку ми радимо вам зв’язатись з технічною підтримкою веб-хостингу для вирішення проблеми.

Для перевірки чи не викликана проблема налаштуваннями у файлі .htaccess, просто перейменуйте файл .htaccess у кореневій папці сайту на .htaccess_renamed і повторно відкрийте посилання:

https://your-wp-website.com/phptest.php

у вашому браузері.

Помилка зникла:

У такому випадку радимо відновити попередню копію файлу .htaccess з резервної копії або видалити зміни з файлу, якщо ви модифікували цей файл нещодавно, а після цього перевірте сайт повторно.

Помилка залишилась:

Поверніть файл .htaccess назад перейменувавши його з .htaccess_renamed в .htaccess і зв’яжіться з технічною підтримкою вашого хостинг-провайдера т.я. вивчення цієї проблеми потребує доступу до журналів серверу, перевірки налаштувань PHP, тощо.

Важливо: після завершення перевірки обов’язково видаліть файл phptest.php із сервера. Він виводить детальну інформацію про конфігурацію PHP, тому не повинен залишатись доступним для будь-кого через веб.

2.2. Активація режиму діагностики (дебаг) у WordPress

Попередній крок не виявив проблем пов’язаних з обробкою запитів до PHP та файлом .htaccess. Це означає, що проблема пов’язана з самим WordPress і для її подальшого вивчення нам необхідно увімкнути режим діагностики в WordPress.

Режим діагностики (Debug Mode) – це спеціальний технічний режим роботи сайту, який допомагає знаходити та виправляти помилки. Коли він увімкнений, WordPress записує PHP-помилки, попередження та інші проблеми, які виникають під час роботи тем, плагінів і самого рушія WordPress.

Для активації режиму діагностики, відкрийте файл wp-config.php, який знаходиться в кореневій папці сайту, для редагування зручним для вас способом.

Змініть існуючі параметри та додайте параметри, які не існують, таким чином:

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

Збережіть зміни.

Ці рядки активують режим діагностики в якому різні помилки та попередження, які виникають під час роботи сайту, зберігаються в файлі debug.log.

2.3. Аналіз помилок в WordPress

Перезавантажте сторінку (Ctrl+F5), на якій виникає помилка, після чого відкрийте файл:

wp-content/debug.log

У цьому файлі WordPress записує помилки та попередження, які виникли під час обробки запиту. Насамперед звертайте увагу на повідомлення, що містять Fatal error — саме вони часто є безпосередньою причиною помилки 500.

Проаналізуйте ці повідомлення, особливу увагу приділяйте помилкам, які містять “Fatal Error“, порівняйте з повідомленнями наведеними нижче та виконайте рекомендації для усунення проблеми:

Інформація: Щоб успішно діагностувати проблему, необхідно розуміти який саме компонент сайту викликає проблему: тема, плагін або сам рушій WordPress. Визначити проблемний компонент можна з шляху який показує помилка.
Якщо шлях в помилці містить:

  • wp-content/themes” – значить проблема криється в темі сайту. Після “themes” вказано назву папки в якій знаходяться файли теми.
  • wp-content/plugins” – означає що проблема викликана плагіном. Після “plugins” вказано назву папки в якій знаходяться файли плагіна.

Якщо шлях не містить “wp-content” взагалі, це може вказувати на проблему в ядрі WordPress або іншій залежності/компоненті, який завантажується поза “wp-content”.

Помилка “Failed opening required”

Ця помилка має приблизно такий вигляд:

Fatal error: Uncaught Error: Failed opening required
'/home/user/public_html/wp-content/plugins/plugin-name/includes/functions.php'
(include_path='.:/usr/share/php')

Помилка “Failed opening required” сповіщає про те, що ваш сайт не може підключити файл
‘/home/user/public_html/wp-content/plugins/plugin-name/includes/functions.php’
так як файл відсутній.

Дії для усунення проблеми:

Якщо ви нещодавно працювали з файлами сайту (копіювали сайт з однієї папки в іншу або змінювали хостинг):

  • Переконайтесь що ви завантажили всі файли сайту в ваш аккаунт
  • Відновіть файл з резервної копії якщо файл було випадково видалено.
  • Перевстановіть проблемний плагін або тему.

Помилки WordPress – “undefined function”, “undefined method”:

Помилки мають приблизно такий вигляд:

PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect()
in /home/user/public_html/wp-content/plugins/plugin-name/plugin.php:125
PHP Fatal error: Uncaught Error: Call to undefined method WP_Query::some_method()
in /home/user/public_html/wp-content/plugins/plugin-name/file.php:156

Подібні помилки часто виникають після зміни версії PHP, оновлення тем/плагінів або самого рушія WordPress.

Дії для усунення проблеми:

Якщо проблема виникла після зміни версії PHP:

  • Поверніть версію PHP на попередню.

Якщо помилка виникла після оновлення рушія WordPress:

  • Встановіть версію PHP яка зазначена в системних вимогах на офіційному сайті WordPress.
  • Оновіть всі додаткові компоненти (теми / плагіни) до останньої версії.
  • Спробуйте відключити проблемний плагін або змінити тему яка викликає проблему.

Якщо вищенаведені кроки не допомогли:
Відновіть сайт з резервної копії. Ви можете дізнатись як зробити резервну копію та як відновити сайт з резервної копії за допомогою Софтакулус на нашому сайті.

Помилка WordPress – syntax error

Помилки цього типу можна ідентифікувати за наявністю “syntax error” в повідомленні про помилку, як наведено нижче:

Parse error: syntax error, unexpected token "}"
in /home/user/public_html/wp-content/themes/theme-name/functions.php on line 127

Вони часто виникають після модифікації файлів або зміни версії PHP

Дії для усунення проблеми:

Якщо ви модифікували файл зазначений в помилці:

  • Відкрийте файл для перегляду і перевірте ваш PHP код. Можливо ви пропустили кому, дужку, крапку з комою, один з аргументів під час виклику функції тощо. Виправте код, якщо таку помилку виявлено.

Якщо ви змінювали версію PHP для сайту:

  • Поверніть версію PHP на ту, яку яка використовувалась раніше.

Якщо файл не модифікували і не змінювали версію PHP:

  • Проскануйте файли сайту на наявність підозрілих файлів за допомогою Imunify або аналогічних інструментів оскільки такі помилки також характерні для зламу сайту;
  • Видаліть підозрілі файли, якщо такі файли буде виявлено;
  • Відновіть пошкоджений файл з резервної копії;
  • Створіть нову резервну копію;
  • Оновіть сам WordPress та всі додаткові компоненти (теми / плагіни) до актуальної версії.

Помилка WordPress – Allowed memory size

Помилка цього типу виникає у випадку, якщо під час виконання запиту PHP скрипт досяг ліміту пам’яті який дозволено використовувати кожному PHP скрипту. Її можна ідентифікувати за наявністю повідомлення “Allowed memory size” та “exhausted“.

Помилка має приблизно такий вигляд:

Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 20480 bytes) in
/home/user/public_html/wp-content/plugins/example-plugin/plugin.php on line 456 

У наведеному прикладі PHP дозволено використовувати не більше 268435456 байт оперативної пам’яті, що відповідає 256 MB. Під час виконання скрипта цей ліміт було досягнуто, а PHP спробував виділити додаткові 20480 байт пам’яті. Оскільки доступний ліміт вже був вичерпаний, виконання скрипта було аварійно завершено.

Сам факт виникнення такої помилки не означає, що на сервері фізично недостатньо оперативної пам’яті. Повідомлення означає, PHP-процес досяг ліміту пам’яті, який встановлено на використання пам’яті PHP скриптами.

Причиною може бути плагін або тема, які використовують велику кількість пам’яті під час виконання певної операції. Наприклад, це може відбуватися під час імпорту великої кількості записів, обробки зображень, роботи з товарами WooCommerce, формування складних запитів до бази даних або виконання інших ресурсомістких операцій.

Дії для усунення проблеми:

Якщо помилка виникає після встановлення або оновлення плагіна:

  • Збільшіть ліміт memory_limit для PHP;
  • відключіть проблемний плагін якщо збільшення memory_limit не допомогло або якщо плагін не є критичним для вашого сайту.

Збільшення ліміту пам’яті не завжди є правильним способом вирішення проблеми так як може виникнути ситуація, коли один ресурсоємний PHP процес використовує всю доступну для сайту пам’ять, через що всі процеси пов’язані з сайтом починають працювати дуже повільно або завершуються з помилками. В такий ситуації один важкий процес спричиняє відмову всього сайту і всі відвідувачі сайту отримують помилки.

Важливо: якщо після збільшення memory_limit помилка продовжує виникати або знову з’являється після певного часу, необхідно шукати причину надмірного використання пам’яті. Просте збільшення ліміту не усуває помилку в коді плагіна або теми, яка призводить до надмірного використання ресурсів.

3. Помилку Internal Server Error в WordPress виправлено

Після усунення проблеми рекомендується вимкнути режим діагностики, оскільки активне логування може призвести до швидкого збільшення розміру файлу debug.log

Для вимкнення логування відкрийте файл wp-config.php та встановіть наведені нижче параметри:

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

Видаляти наведені рядки з файлу не рекомендується.

Якщо помилка 500 виникла через несумісність компонентів між собою або з новою версією PHP, і для її усунення довелось відкотити сайт до застарілої версії WordPress, рекомендуємо якнайшвидше оновити WordPress та всі додаткові компоненти до актуальних версій.

Компоненти, які більше не отримують оновлень і спричиняють проблеми із сумісністю, роблять ваш сайт вразливим до хакерських атак. Такі компоненти варто замінити на сучасні аналоги, попередньо створивши резервну копію сайту.

4. Обирайте надійний хостинг для WordPress

Хоча оновлення WordPress не виглядає складною справою, не варто розраховувати тільки на свої сили. Надійний хостинг-партнер з якісною технічною підтримкою, тарифні плани WordPress хостингу з зручоа панеллю керування значно спрощують адміністрування сайту та допомагають уникнути багатьох проблем у майбутньому.

Для розміщення сайтів на WordPress, інтернет-магазинів, форумів, баз знань та інших вебпроєктів обирайте тарифні плани SSD-хостингу, які забезпечують необхідні ресурси та зручні інструменти для керування сайтом.

Прокрутка до верху