Смена версии PHP для WordPress: инструкции и примеры кода

Раздел: WordPress -> Версии PHP

Обновление версии PHP для сайтов на WordPress

Устаревшая версия PHP замедляет работу сайта и создаёт уязвимости. Ниже описаны несколько способов перехода на новую версию. Каждый метод имеет свои цели и подходит для разных ситуаций.

Как обновить PHP через панель управления хостингом (cPanel)?

Цель:

Быстрое и безопасное переключение PHP на большинстве виртуальных хостингов. Подходит для пользователей без доступа к командной строке.

  • Войти в cPanel и найти раздел "Software" или "Дополнительно".
  • Выбрать "Select PHP Version" (или "MultiPHP Manager").
  • Из выпадающего списка выбрать целевую версию (например, 8.1 или 8.2).
  • Сохранить изменения. Веб-сервер начнёт использовать новую версию.

Инструкция:


# После входа в cPanel переходим в раздел Software - Select PHP Version
# Выбираем нужную версию, например, 8.2
# Нажимаем Set as current

Php 8 request (особенности обработки запросов в php 8)

Типичные проблемы:

  • Ошибка 500 Internal Server Error – несовместимость плагинов или темы. Решение: отключить все плагины, включить стандартную тему, проверить.
  • Нужная версия отсутствует – обратиться в поддержку хостинга или сменить провайдера.

Как изменить версию PHP через командную строку (SSH)?

Цель:

Полный контроль над окружением. Подходит для VPS или выделенных серверов.

  1. Подключиться по SSH.
  2. Проверить текущую версию: php -v
  3. Если несколько версий установлены, проверить список: update-alternatives --list php
  4. Переключить алиас: sudo update-alternatives --set php /usr/bin/php8.1
  5. Перезапустить веб-сервер: sudo systemctl restart apache2 или sudo systemctl restart nginx

# Пример для Ubuntu с PHP 8.1 и 8.2
sudo apt update
sudo apt install php8.1 php8.1-cli php8.1-common php8.1-mysql
sudo update-alternatives --set php /usr/bin/php8.1
sudo systemctl restart apache2

Php 8.4 windows (php 8.4 на windows)

$ php -v
PHP 8.1.25 (cli) (built: ... )

Php 7 функции (новые функции php 7)

Типичные ошибки:

  • Команда sudo не найдена – выполнять от root или настроить sudo.
  • После переключения сайт выдаёт ошибку о нехватке модулей – установить недостающие расширения (php8.1-mbstring, php8.1-xml и т.д.).

Как установить конкретную версию PHP через .htaccess?

Цель:

Изменение PHP только для конкретной папки или домена без доступа к глобальным настройкам. Работает на серверах Apache с mod_suexec или FastCGI.


# В корневой папке сайта добавить в .htaccess:
AddHandler application/x-httpd-php8.1 .php

обновление php wordpress (обновление версии php для wordpress)

Пояснение:

Указанная директива заставляет Apache обрабатывать .php файлы с помощью PHP 8.1. Точное имя обработчика (application/x-httpd-php8.1) зависит от настроек хостинга. Его можно узнать в панели управления или у провайдера.

Проблемы:

  • Обработчик не существует – сайт выдаст ошибку 500. Проверить доступные обработчики через раздел "Select PHP Version" в cPanel.
  • Метод не работает на Nginx – для Nginx требуется настройка конфигурации виртуального хоста.

Как обновить PHP в Docker-контейнере для WordPress?

Цель:

Локальная разработка или изолированные окружения. Подходит для команд, использующих контейнеризацию.


# Файл docker-compose.yml (фрагмент)
services:
  wordpress:
    image: wordpress:php8.1-apache
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: user
      WORDPRESS_DB_PASSWORD: password

Php 8 json (php 8: изменения в работе с json)

Инструкция:

  1. Заменить тег image на нужную версию (например, wordpress:php8.2-apache).
  2. Пересоздать контейнер: docker-compose up -d.
  3. Проверить версию: docker-compose exec wordpress php -v.
$ docker-compose exec wordpress php -v
PHP 8.2.12 (cli) (built: ... )

Php v 7 (php версия 7)

Возможные проблемы:

  • После обновления могут отсутствовать расширения – добавить их в Dockerfile или выбрать образ с нужными расширениями.
  • База данных остаётся, но данные могут быть несовместимы – предварительно сделать бэкап.

Как проверить совместимость WordPress с новой версией PHP без обновления?

Цель:

Оценить готовность сайта к переходу. Подходит для любых хостингов, особенно при использовании плагина Health Check.


# Установить и активировать плагин Health Check & Troubleshooting
# Перейти в Инструменты -> Health Check -> вкладка PHP
# Плагин покажет текущую версию PHP и предупреждения о несовместимости

Php 8 function (функции php 8)

Также можно создать файл phpinfo.php в корне WordPress:


<?php
phpinfo();

Открыть его в браузере, чтобы увидеть текущую конфигурацию PHP. После проверки удалить файл из соображений безопасности.

Примечание:

Некоторые плагины могут не поддерживать новую версию PHP. Перед обновлением рекомендуется протестировать сайт на staging-окружении.

- язык php 4 (php 4)
- Php 7 3 (php версии 7.3)

Расширенные примеры обновления PHP для WordPress

Полный скрипт автоматического обновления PHP на сервере Ubuntu через SSH

Пример bash-скрипта

Пример

#!/bin/bash
# update_php.sh - переключение на PHP 8.2 для WordPress
set -e

sudo apt update
sudo apt install -y php8.2 php8.2-cli php8.2-common php8.2-mysql php8.2-curl php8.2-xml php8.2-mbstring php8.2-zip php8.2-gd

# Переключение алиаса
sudo update-alternatives --set php /usr/bin/php8.2
sudo update-alternatives --set phar /usr/bin/phar8.2 2>/dev/null || true

# Перезапуск веб-сервера
if systemctl is-active --quiet apache2; then
    sudo systemctl restart apache2
elif systemctl is-active --quiet nginx; then
    sudo systemctl restart nginx
fi

echo "PHP обновлён до версии:"
php -v
$ bash update_php.sh
...
PHP 8.2.13 (cli) (built: ... )

Пояснение:

Скрипт устанавливает PHP 8.2 и все популярные расширения, необходимые для WordPress. После установки переключает глобальный алиас и перезапускает веб-сервер. Рекомендуется запускать с правами root или через sudo.

Пример настройки разных версий PHP для разных поддоменов через Nginx

Конфигурация виртуального хоста для использования PHP 8.1 и 8.2 одновременно

Пример

# /etc/nginx/sites-available/example.com
server {
    listen 80;
    server_name old.example.com;
    root /var/www/old;
    index index.php;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    }
}

server {
    listen 80;
    server_name new.example.com;
    root /var/www/new;
    index index.php;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
    }
}

Результат:

Поддомен old.example.com использует PHP 8.1, new.example.com – PHP 8.2. Это позволяет тестировать обновление на одном сайте, не затрагивая другой.

Пример docker-compose.yml для WordPress с PHP 8.2 и MariaDB

Пример

version: '3'
services:
  db:
    image: mariadb:10.11
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: wppass

  wordpress:
    depends_on:
      - db
    image: wordpress:php8.2-apache
    ports:
      - 8000:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: wppass
      WORDPRESS_DB_NAME: wordpress
volumes:
  db_data:

Пояснение:

Образ wordpress:php8.2-apache включает Apache и PHP 8.2 с необходимыми модулями. После запуска docker-compose up -d WordPress будет работать на PHP 8.2. Для смены версии достаточно изменить тег образа и перезапустить контейнер.

Использование WP-CLI для диагностики перед обновлением PHP

Пример

# Проверка совместимости всех плагинов с PHP 8.1 (при текущей версии 7.4)
wp plugin list --status=active --fields=name,version,update

# Проверка на наличие ошибок после смены PHP (при условии, что новая версия уже работает)
wp core verify-database

# Отображение информации о PHP
wp server --url=example.com --php_ini=/etc/php/8.1/cli/php.ini

Результат выполнения wp core verify-database:

Success: WordPress database meets requirements.

Пояснение:

WP-CLI не изменяет версию PHP, но помогает убедиться, что сайт готов к обновлению. Команда wp plugin list показывает активные плагины и их статус обновлений. После переключения PHP можно проверить целостность базы данных.

Обновление версии PHP для WordPress - comments

En
обновление php wordpress (php)