Какая версия PHP подходит для WordPress: полное руководство

Раздел: WordPress -> Разработка на 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 или собственной панели. Инструкция:

  1. Войдите в панель управления хостингом.
  2. Найдите раздел «Версия PHP» или «PHP Selector».
  3. Выберите нужную версию (например, 8.1 или 8.2).
  4. Сохраните изменения. Сайт перезагрузится с новой версией.

Ошибка: после смены версии PHP не работает какой-то функционал. Решение: откатитесь на предыдущую версию и проверьте совместимость каждого плагина по отдельности.

Как изменить версию PHP с помощью .htaccess?

Этот метод подходит для серверов Apache с mod_suphp или FastCGI. Добавьте в корневой .htaccess:

# Установка версии PHP 8.1
AddHandler application/x-httpd-php81 .php

Wordpress версии 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+ предупреждения об устаревших функциях не выводятся на экран, что помогает избежать поломки верстки при отладке.

Версия PHP для WordPress - comments

En
Wordpress версии php (php)