Какая версия PHP подходит для WordPress: полное руководство
Выбор версии PHP для WordPress
Какую версию PHP следует использовать для стабильной работы WordPress?
WordPress официально рекомендует версию PHP 8.1 или выше (на момент написания статьи). Для достижения максимальной производительности и безопасности сайта следует использовать последнюю стабильную версию PHP 8.2 или 8.3, если ваш хостинг и все плагины с темами её поддерживают. WordPress сам проверяет совместимость и выводит предупреждения в админ-панели, если версия PHP устарела.
// Проверка версии PHP в WordPress
<?php echo phpversion(); ?>Wp include php (wordpress: включение файлов)
Выполните этот код на странице шаблона или в файле functions.php для вывода текущей версии. Результат появится в теле страницы.
Проблема: после обновления PHP сайт перестал работать. Возможные причины: использование устаревших функций (например, mysql_*), неподдерживаемые плагины. Решение: включите режим отладки в wp-config.php (define('WP_DEBUG', true);) и просмотрите журнал ошибок.
Как выбрать версию PHP через панель хостинга?
Большинство хостинг-провайдеров позволяют переключать версию PHP в cPanel, ISPmanager или собственной панели. Инструкция:
- Войдите в панель управления хостингом.
- Найдите раздел «Версия PHP» или «PHP Selector».
- Выберите нужную версию (например, 8.1 или 8.2).
- Сохраните изменения. Сайт перезагрузится с новой версией.
Ошибка: после смены версии PHP не работает какой-то функционал. Решение: откатитесь на предыдущую версию и проверьте совместимость каждого плагина по отдельности.
Как изменить версию PHP с помощью .htaccess?
Этот метод подходит для серверов Apache с mod_suphp или FastCGI. Добавьте в корневой .htaccess:
# Установка версии PHP 8.1
AddHandler application/x-httpd-php81 .phpWordpress версии php (версия php для wordpress)
Если хостинг поддерживает несколько версий, замените php81 на нужную (php82, php74 и т.д.).
Ошибка: 500 Internal Server Error. Значит, хостинг не поддерживает указанную версию или директива синтаксически неверна. Удалите строку и свяжитесь с поддержкой хостинга.
Как протестировать сайт с разными версиями PHP локально (Docker)?
Используйте Docker-образы с разными версиями PHP. Пример docker-compose.yml:
version: '3'
services:
wordpress:
image: wordpress:php8.1-apache
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: pass
db:
image: mysql:5.7
Запустите docker-compose up и проверьте сайт на localhost:8080.
Проблема: контейнер WordPress не запускается из-за несовместимости с MySQL. Решение: используйте образ MySQL 8.0 и установите драйвер mysqli.
Как проверить совместимость плагина с конкретной версией PHP?
Плагин может использовать устаревшие функции. Включите отладку и установите плагин «WP PHP Compatibility Checker» или выполните тестовую проверку в админ-панели: Инструменты → Совместимость сайта. Если плагин требует PHP 7.4, а у вас 8.2, возможны конфликты.
// Пример проверки функции в теме
if (function_exists('get_the_author_meta')) {
echo 'Функция доступна';
} else {
echo 'Функция не определена';
}
Ошибка: после обновления PHP плагин выводит белый экран. Откройте файлы плагина и замените устаревшие функции на современные аналоги.
Расширенные примеры работы с версиями PHP в WordPress
Пример 1: Скрипт для определения минимальной версии PHP перед установкой плагина
// В основном файле плагина
if (version_compare(PHP_VERSION, '8.0', '<')) {
add_action('admin_notices', function() {
echo '<div class="notice notice-error">Плагин требует PHP 8.0 или выше. Текущая версия: ' . PHP_VERSION . '</div>';
});
return;
}
Результат: в панели администратора появится уведомление об ошибке, если версия PHP ниже 8.0. Плагин не активируется.
Пример 2: Использование полифилла для устаревших функций
if (!function_exists('mysqli_connect')) {
function mysqli_connect($host, $user, $pass, $db) {
// Эмуляция через PDO
try {
$pdo = new PDO("mysql:host=$host;dbname=$db", $user, $pass);
return $pdo;
} catch (PDOException $e) {
return false;
}
}
}
Результат: если на сервере отключено расширение mysqli, функция создает совместимый аналог на PDO. Плагины, использующие mysqli, могут продолжить работу.
Пример 3: Автоматическое переключение версии PHP через .htaccess с условием
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/outdated-plugin(.*)$
RewriteRule .* - [E=PHP_VERSION:php74]
SetEnv PHP_VERSION php74
</IfModule>
Результат: для запросов к каталогу /outdated-plugin будет использоваться PHP 7.4, остальные страницы работают на основной версии. Необходимо, чтобы хостинг поддерживал переменную окружения PHP_VERSION.
Пример 4: Команда для поиска файлов с устаревшими функциями в теме
grep -rn "mysql_" wp-content/themes/your-theme/ --include="*.php"
Результат: вывод всех строк, содержащих устаревшие функции mysql_. Это помогает быстро найти несовместимый код.
Пример 5: Проверка совместимости через WP-CLI
wp core check-update --php_version=8.1
Результат: список обновлений ядра, плагинов и тем, совместимых с PHP 8.1. Используется для аудита сайта перед сменой версии.
Пример 6: Локальная среда с разными версиями PHP (Laravel Valet)
valet isolate wordpress-site --php=php81
Результат: проект wordpress-site будет использовать PHP 8.1 независимо от глобальной версии. Это удобно для тестирования нескольких проектов с разными версиями.
Пример 7: Работа с phpinfo() для диагностики
// Создайте файл info.php в корне WordPress
<?php phpinfo(); ?>
Результат: подробная таблица с настройками PHP, включая версию, загруженные расширения и конфигурацию. После диагностики файл нужно удалить из соображений безопасности.
Пример 8: Автоматическое включение режима совместимости для PHP 8
add_action('init', function() {
if (version_compare(PHP_VERSION, '8.0', '>=')) {
// Включаем режим игнорирования warnings для устаревших функций
error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED);
}
});
Результат: на PHP 8+ предупреждения об устаревших функциях не выводятся на экран, что помогает избежать поломки верстки при отладке.