Перейти к содержимому

Несовместимость PHP: плагины или тема не поддерживают актуальную версию PHP (8.x)

Несовместимость PHP: плагины или тема не поддерживают актуальную версию PHP (8.x)

Короткий ответ: Ошибка совместимости с PHP 8.x проявляется как белый экран, HTTP 500 или предупреждение в админке после обновления PHP. Решение — обновить плагины и тему до последних версий, заменить устаревшие компоненты или включить временный fallback через WP_ENVIRONMENT_TYPE и .htaccess. Мы в студии Gurupractice сталкиваемся с этим еженедельно и подготовили пошаговое руководство.

Почему вообще возникает эта ошибка

PHP — язык, на котором написан WordPress и большинство его плагинов. С каждой новой мажорной версией (7.4 → 8.0 → 8.1 → 8.2 → 8.3 → 8.4) разработчики PHP удаляют устаревшие функции, меняют поведение типов и ужесточают обработку ошибок.

Если плагин или тема не обновлялись 2–3 года, в их коде почти гарантированно используются конструкции, которые PHP 8.x считает фатальной ошибкой:

  • mysql_* функции — удалены в PHP 7.0, в 8.x их нет.
  • each() — удалена в PHP 8.0.
  • create_function() — удалена в PHP 8.0.
  • Неявное приведение типов — в PHP 8.x строже; код вида if ($var = 'value') вместо if ($var == 'value') генерирует предупреждение или ошибку.
  • implode() с переставленными аргументами — раньше прощалось, в 8.x — фатальная ошибка.

По данным статистики W3Techs, на начало 2026 года PHP 8.x используют более 78% всех сайтов на PHP. Хостинг-провайдеры один за другим прекращают поддержку PHP 7.4. Если вы получили такое предупреждение — вы не одни, это массовая миграция.

Как выглядит ошибка

Симптомы зависят от того, какая именно несовместимость и на каком уровне включены ошибки:

Сценарий Типичное проявление
PHP 8.0+ с включённым WP_DEBUG Явная ошибка: Fatal error: Uncaught Error: Call to undefined function each()
PHP 8.0+ с выключенным WP_DEBUG Белый экран смерти (WSOD) на странице плагина или всего сайта
PHP 8.1+ (deprecation warnings) Предупреждение в админке: «Please update your PHP version»
После обновления PHP хостингом Сайт внезапно перестаёт работать — до этого всё было нормально

Пошаговое решение

Шаг 1. Определите, какой именно компонент вызывает ошибку

Включите режим отладки WordPress. Отредактируйте wp-config.php:

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

После этого перезагрузите страницу, на которой возникает ошибка. Файл wp-content/debug.log покажет точное место:

[06-Jun-2026 12:00:00 UTC] PHP Fatal error:  Uncaught Error: Call to undefined function each() in /wp-content/plugins/old-plugin/functions.php:15

Что важно: в строке ошибки указан путь к файлу — по нему вы сразу поймёте, какой плагин или какая тема проблемные.

Шаг 2. Обновите плагины и тему

Это самый простой и безопасный способ:

  1. В админке WordPress: Плагины → все, у кого есть уведомление об обновлении → Обновить.
  2. Внешний видТемы → обновить активную тему.
  3. Если обновлений нет — проверьте, поддерживается ли плагин автором. На странице плагина в репозитории WordPress смотрите раздел «Tested up to» — если там указано 6.x и дата меньше года назад, плагин жив.

Провал: обновления нет, плагин заброшен автором → переходите к Шагу 3.

Шаг 3. Замените или исправьте код вручную

Вариант A — найти альтернативу. В репозитории WordPress почти для каждого заброшенного плагина есть форк или аналог. Ищите по той же функциональности.

Вариант B — исправить код. Если хотите сохранить плагин, найдите в его коде устаревшие функции и замените на современные аналоги:

Устаревшая функция Замена в PHP 8.x
mysql_connect() mysqli_connect() или wpdb
each() foreach
create_function() Анонимная функция (closure)
implode( $array, $glue ) implode( $glue, $array )

Подробный справочник устаревших функций — в официальной документации PHP.

Вариант C — временный костыль: если нужно время на миграцию, можно подключить classicpress/php-compatibility через must-use плагин. Он перехватывает фатальные ошибки совместимости и показывает понятное сообщение вместо WSOD. Это не решение, а отсрочка — на 2–3 недели максимум.

Шаг 4. Проверьте hosting-окружение

Иногда проблема не в коде, а в настройках сервера:

  • Директива memory_limit — для WordPress рекомендуется 128M и выше. Проверьте через ИнструментыЗдоровье сайта.
  • Версия PHP на хостинге — убедитесь, что вы используете не самую свежую «сырую» версию. Stable-ветки: 8.1, 8.2, 8.3. PHP 8.4 пока имеет ограниченную поддержку плагинов.
  • OPcache — после смены версии PHP очистите кеш.

Шаг 5. Если всё ещё не работает — изолируйте проблему

Отключите все плагины (через FTP или файловый менеджер хостинга, переименовав папку wp-content/plugins). Если сайт заработал — включайте плагины по одному и тестируйте. Проблемный плагин найдёте на третьем-четвёртом шаге.

Профилактика

Чтобы не попадать в такую ситуацию в будущем:

  1. Подпишитесь на уведомления об обновлениях PHP от вашего хостинга. Обычно они предупреждают за 3–6 месяцев.
  2. Держите staging-копию сайта. Перед обновлением PHP на проде — протестируйте на стейджинге. Мы используем WP Staging — бесплатный плагин для создания копий.
  3. Удаляйте неиспользуемые плагины. Чем меньше кода, тем меньше поверхность для несовместимости.
  4. Выбирайте активно поддерживаемые плагины. На странице плагина в репозитории смотрите: частоту обновлений, количество активных установок и дату последнего тестирования.

Когда звать специалиста

Если после всех шагов сайт не работает, а бюджет на техподдержку есть — не геройствуйте. Восстановление сайта после неудачного обновления PHP может занять у неподготовленного человека целый день.

В студии Gurupractice мы регулярно:
— проводим аудит совместимости перед обновлением PHP;
— исправляем или заменяем устаревшие плагины;
— настраиваем staging-окружение для безопасного тестирования.

Дата публикации: 6 июня 2026 г.
Автор: Команда Gurupractice — студия поддержки и разработки сайтов на WordPress.

Источники:
1. PHP Manual — Appendices (список устаревших функций)
2. WordPress.org — Debugging in WordPress
3. W3Techs — Usage statistics of PHP
4. Make WordPress Core — PHP compatibility