Если вы оказались на этой странице, вероятно, вы являетесь владельцем сайта на WordPress, и сейчас ваш сайт выдает ошибку 500 — Internal Server Error или вместо вашего сайта отображается просто белая страница.
Это типичная ошибка для любых сайтов, независимо от типа хостинга, который вы используете для размещения WordPress-сайта, но причин её появления может быть довольно много. Проблема может возникнуть после установки или обновления плагина или темы, из-за ошибок в коде, неправильных настроек сервера, недостаточных ресурсов, несовместимости движка WordPress или одного из его компонентов с текущей версией PHP или из-за повреждения файлов WordPress.
Самое неприятное в этой ошибке то, что сообщение 500 — Internal Server Error само по себе практически ничего не говорит о причине проблемы. Эта ошибка свидетельствует лишь о том, что во время обработки запроса произошла внутренняя ошибка, из-за которой обработка запроса была прервана, но ошибка Internal Server Error не указывает, что именно её вызвало.
В этой статье мы разберём основные причины возникновения ошибки 500 — Internal Server Error в WordPress, опишем методику диагностики и поиска причин проблемы, а также рассмотрим способы её устранения.
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, и вернёт код ответа от сервера. Если обработка запроса к сайту действительно завершается ошибкой, в ответе вы получите:
Если вы получили код ответа «301» или «302», убедитесь, что вы указали правильный протокол (http:// или https://) и домен, на котором работает ваш сайт.
Если вы получили код ответа «200», но вместо вашего сайта отображается другая страница или пустая страница, проверьте содержимое корневой папки сайта. В частности, убедитесь, что там нет файлов index.htm или index.html, которые в соответствии с настройками веб-сервера могут иметь приоритет над index.php. Если такие файлы не нужны, удалите или переименуйте их и проверьте работу сайта повторно.
Вы можете проверить код ответа и другим способом — через сторонние сервисы или с помощью инструментов веб-мастера в браузере.
2. Как найти и устранить причину ошибки 500 – Internal Server Error в WordPress
Вы убедились, что обработка запроса к сайту завершается ошибкой 500. Но что делать дальше? Как определить, что именно вызывает ошибку 500 и белую страницу в WordPress? Какие шаги необходимо выполнить, чтобы решить проблему?
Как мы уже писали ранее, эту ошибку могут вызывать настройки сервера, PHP и самого сайта. Ниже мы приведем пошаговую инструкцию по диагностике проблемы и устранению ошибки «500 — Internal Server Error»:
2.1. Проверка работы PHP и настроек .htaccess
Создайте файл с именем phptest.php со следующим содержанием:
<?php
phpinfo();
?>
и разместите его в корневой папке (домашней папке) сайта.
Откройте в браузере ссылку:
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 и т. д.
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«, сравните с приведёнными ниже сообщениями и выполните рекомендации по устранению проблемы:
Если путь в ошибке содержит:
- «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.
- Обновите все дополнительные компоненты (темы / плагины) до последней версии.
- Попробуйте отключить проблемный плагин или сменить тему, вызывающую проблему.
Если приведенные выше шаги не помогли:
Восстановите сайт из резервной копии. Вы можете узнать как сделать резервную копию и как восстановить сайт из резервной копии с помощью Softaculous на нашем сайте.
Ошибка 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 МБ. Во время выполнения скрипта этот лимит был достигнут, и PHP попытался выделить дополнительные 20480 байт памяти. Поскольку доступный лимит уже был исчерпан, выполнение скрипта было аварийно прервано.
Сам факт возникновения такой ошибки не означает, что на сервере физически недостаточно оперативной памяти. Сообщение означает, что PHP-процесс достиг лимита памяти, установленного для использования памяти PHP-скриптами.
Причиной может быть плагин или тема, которые используют большое количество памяти при выполнении определённой операции. Например, это может происходить при импорте большого количества записей, обработке изображений, работе с товарами WooCommerce, формировании сложных запросов к базе данных или выполнении других ресурсоёмких операций.
Действия по устранению проблемы:
Если ошибка возникает после установки или обновления плагина:
- Увеличьте лимит memory_limit для PHP;
- отключите проблемный плагин, если увеличение memory_limit не помогло или если плагин не является критически важным для вашего сайта.
Увеличение лимита памяти не всегда является правильным способом решения проблемы, так как может возникнуть ситуация, когда один ресурсоемкий PHP-процесс использует всю доступную для сайта память, из-за чего все процессы, связанные с сайтом, начинают работать очень медленно или завершаются с ошибками. В такой ситуации один ресурсоемкий процесс приводит к сбою всего сайта, и все посетители сайта получают ошибки.
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-хостинга, которые обеспечивают необходимые ресурсы и удобные инструменты для управления сайтом.
