Обновить PHP на WordPress — это одна кнопка в панели хостинга, но после неё сайт может отдавать ошибку 500, если какой-то плагин написан под старую версию. Так вышло и у нас: при переходе этого сайта с PHP 7.4 на 8.2 он пять минут лежал из-за трёх заброшенных плагинов. Ниже — какая версия PHP нужна WordPress, как её узнать, что именно ломается, как проверить плагины до переключения и что делать, если сайт всё-таки упал.

Какая версия PHP нужна WordPress
На странице требований WordPress рекомендуется PHP 8.3 или новее. Работать WordPress может и на PHP 7.4, но эти версии, как там же сказано, больше не поддерживаются и могут сделать сайт уязвимым. Какие версии PHP поддерживает каждая версия WordPress, видно в таблице совместимости:
| Версия WordPress | Поддерживаемые версии PHP | Минимум |
|---|---|---|
| 7.1 и 7.0 | 7.4, 8.0–8.5 | 7.4 |
| 6.9 | 7.2–7.4, 8.0–8.5 | 7.2 |
Смотреть стоит и на срок поддержки самого PHP. По данным php.net, сейчас поддерживаются ветки 8.2–8.5, причём 8.2 получает только исправления безопасности и до 31 декабря 2026 года. Версии 7.4, 8.0 и 8.1 уже не поддерживаются вовсе. Поэтому переходить лучше сразу на 8.3 или 8.4, если плагины это позволяют. Мы перешли на 8.2 — и в ближайшие месяцы нас ждёт следующий шаг.
Как узнать версию PHP на сайте WordPress
Проще всего в самом WordPress: Инструменты → Здоровье сайта → Информация → Сервер, строка «Версия PHP». Если версия устарела, WordPress сам предупредит об этом на вкладке «Состояние».

Версия также видна в панели хостинга, в настройках сайта. Если есть SSH, команда php -v покажет версию, которая работает в консоли, — но она может отличаться от версии, на которой работает сайт.
Что ломается при переходе на PHP 8
В PHP 8.0 убрали несколько старых возможностей, которые годами работали с предупреждениями. По списку несовместимых изменений на php.net, чаще всего в старых плагинах встречаются три:
create_function()— удалена, вместо неё анонимные функцииfunction () { ... };each()— удалена, вместо неёforeach;- доступ к символу строки через фигурные скобки
$s{0}— больше не поддерживается, только$s[0].
Любое из этого в активном плагине или теме даёт фатальную ошибку, то есть ошибку 500 или сообщение о критической ошибке. Ядро WordPress и живые плагины давно переписаны; проблема почти всегда в плагинах, которые годами не обновлялись.
Наш кейс: 5 минут ошибки 500
Этот сайт много лет работал на PHP 7.4. Перед переходом мы обновили ядро WordPress до 7.1.2 — этого требовал Yoast — и все плагины. Затем переключили PHP на 8.2 в панели хостинга. Сайт сразу начал отдавать 500, а в логе появились две ошибки:
PHP Fatal error: Uncaught Error: Call to undefined function create_function() PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported in plugins/wordpress-23-related-posts-plugin/lib/stemmer.php on line 388
Виноватыми оказались три плагина, которые давно никто не обновлял:
| Плагин | Что сломалось |
|---|---|
| wordpress-23-related-posts-plugin (похожие записи) | create_function в двух файлах и $s{0} в lib/stemmer.php |
| wp-russian-typograph (типограф) | create_function внутри preg_replace_callback |
| wp-media-cleaner | create_function в настройках |
Сначала мы подняли сайт быстрой правкой прямо в файлах плагинов:
// было
create_function('$p', 'return $p->ID;')
// стало
function ($p) { return $p->ID; }
// было
$s{0}
// стало
$s[0]Сайт ожил. Но латать чужой заброшенный код — временная мера, поэтому следующим шагом все три плагина мы удалили: типографику и похожие записи закрывают тема и Yoast, а Media Cleaner был не нужен. Оригиналы файлов сохранили на случай, если что-то понадобится вернуть.
Как проверить плагины до обновления PHP
Эти пять минут простоя можно было не допустить. Мы воспроизвели ошибки на тестовых файлах, чтобы проверить, какие способы их находят, — и выяснили важную вещь.
Проверка синтаксиса новой версией PHP. Команда php -l проверяет файл без запуска. Запускаем её от PHP 8.2 для трёх файлов: со старыми скобками, с create_function и уже исправленного:
php -l plugin/stemmer.php php -l plugin/init.php php -l plugin/fixed.php
Fatal error: Array and string offset access syntax with curly braces is no longer supported in plugin/stemmer.php on line 3 Errors parsing plugin/stemmer.php No syntax errors detected in plugin/init.php No syntax errors detected in plugin/fixed.php
Скобки php -l поймал, а create_function — нет: синтаксически вызов несуществующей функции корректен, ошибка возникает только при выполнении. А PHP 7.4 не видит проблем ни в одном из файлов. Поэтому php -l нужно запускать именно новой версией PHP и дополнять поиском удалённых функций:
grep -rnE 'create_function|each\(|\$[a-zA-Z_]+\{' wp-content/plugins wp-content/themesplugin/init.php:2:$ids = array_map(create_function('$p', 'return $p->ID;'), $posts);
plugin/stemmer.php:3: return $s{0};Выше — вывод на наших тестовых файлах. На реальном сайте поиск выдаст и ложные срабатывания: each( найдётся внутри foreach( и в названиях методов вроде $items->each(. Смотрите глазами строки, которые нашлись.
Где запустить нужную версию PHP. На VPS — в Docker, не трогая систему: docker run --rm -v "$PWD":/app -w /app php:8.2-cli php -l файл.php. На хостинге Timeweb по документации в SSH-консоли доступны разные версии PHP по пути /opt/phpXX/bin/php, например /opt/php82/bin/php -l файл.php.
Проверить все PHP-файлы плагинов и темы разом:
find wp-content/plugins wp-content/themes -name '*.php' -exec php -l {} \; | grep -v '^No syntax errors'Как обновить версию PHP в WordPress: порядок
- Сделайте резервную копию файлов и базы — как, в статье резервная копия сайта.
- Обновите ядро WordPress, тему и плагины. Плагины, у которых нет обновлений несколько лет, — первые кандидаты на удаление или замену.
- Проверьте код новой версией PHP:
php -lи поиск удалённых функций, как выше. - Подготовьте запасной вход. Если админка не откроется, отключить плагин можно, переименовав его папку в
wp-content/pluginsчерез FTP, SFTP или файловый менеджер хостинга. Проверьте доступ заранее. - Переключайте в тихие часы, когда посетителей меньше всего.
- Смените версию в панели хостинга. У Timeweb это Сайты → Мои сайты → значок шестерёнки у сайта → «Настроить» в блоке «Настройки версии и кодировки» → нужная версия → сохранить. Если нужной версии нет, Timeweb предлагает написать в поддержку для переноса на другой сервер. В других панелях пункт обычно тоже в настройках сайта.
- Сразу проверьте сайт: главную, пару записей, админку, формы. Откройте лог ошибок.
Если сайт упал после обновления PHP
- Самое быстрое — вернуть прежнюю версию PHP в той же панели, а разбираться уже спокойно.
- Найдите виновника в логе. В строке фатальной ошибки указан путь к файлу, а значит и плагин. Как читать лог и включить
debug.logв WordPress — в статье ошибка 500 и 502. - Отключите плагин, переименовав его папку, и проверьте сайт.
- Замените или удалите плагин, а не только правьте его: следующая версия PHP может сломать его снова.
Обновление 29.09.2026: поддержка PHP 8.2 заканчивается 31 декабря 2026 года — подробности в новости об обновлениях PHP 24 сентября.
Источники: требования WordPress, совместимость WordPress и PHP, поддерживаемые версии PHP, несовместимые изменения PHP 8.0, смена версии PHP на Timeweb. Проверено 26 сентября 2026 года.








