Способы обновления PHP в среде Bitrix Framework

Раздел: Администрирование -> Обновление версии PHP

Обновление версии PHP для Bitrix: варианты и инструкции

Как выполнить обновление PHP на сервере с Ubuntu через штатный менеджер пакетов?

Цель: обеспечить совместимость Bitrix с актуальной версией PHP (рекомендовано 8.1 или 8.2).

Пошаговая инструкция для Ubuntu (20.04/22.04)

  1. Добавить репозиторий с новыми версиями PHP (если требуется):
    sudo add-apt-repository ppa:ondrej/php -y
    sudo apt update

    Bitrix update php (обновление php в bitrix)

  2. Установить нужную версию PHP и модули:
    sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip -y
  3. Отключить старую версию и включить новую:
    sudo a2dismod php7.4
    sudo a2enmod php8.1
    sudo systemctl restart apache2
    (для nginx переключение пула php8.1-fpm).
  4. Проверить версию:
    php -v
    Результат:
    PHP 8.1.27 (cli) (built: Feb 10 2025 12:00:00) ( NTS )
  5. Настроить php.ini для Bitrix (рекомендованные параметры):
    sudo sed -i 's/memory_limit = .*/memory_limit = 256M/' /etc/php/8.1/fpm/php.ini
    sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 64M/' /etc/php/8.1/fpm/php.ini

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

  • Конфликт модуля ionCube – скачать под нужную версию PHP.
  • Ошибка PHP Fatal error: Uncaught Error: Call to undefined function … – установить недостающий модуль (sudo apt install php8.1-mysqli).
  • Bitrix отвечает «PHP version not supported» – проверить, что включена нужная версия через phpinfo() или php -v в веб-сервере.

Как обновить PHP в среде Bitrix с использованием Docker?

Цель: изолированное окружение без изменения основной ОС.

Вариант с Docker Compose

version: '3.8'
services:
  php:
    image: bitrixphp:8.1-fpm-alpine  # собственный образ или официальный
    volumes:
      - ./bitrix:/var/www/html
    ports:
      - "9000:9000"

Изменить Dockerfile на нужную версию PHP, пересобрать образ, применить изменения.

Проблема: несовместимость расширений, необходимость включения ionCube в образ.

Как обновить PHP вручную (сборка из исходников) на CentOS?

Цель: получение самой свежей версии, отсутствующий в репозиториях.

Сборка PHP 8.1

wget https://www.php.net/distributions/php-8.1.27.tar.gz
tar -xzf php-8.1.27.tar.gz
cd php-8.1.27
./configure --prefix=/usr/local/php8.1 --with-pdo-mysql --enable-fpm --with-openssl
make -j$(nproc)
sudo make install
sudo cp php.ini-production /usr/local/php8.1/lib/php.ini

Настроить пул FPM и интеграцию с nginx.

Трудность: долгая компиляция, возможны ошибки зависимостей (libxml2, libcurl).

Как переключить версию PHP в панели ISPmanager или Cpanel?

ISPmanager

Зайти в «Версия PHP» → выбрать необходимую (например 8.1) → применить к сайту. Также изменить настройки .htaccess или через скрипт sudo ispmgr -s php_version -u admin -v 8.1.

Ошибка: «Данная версия не поддерживается провайдером» – запросить установку через техподдержку.

Как использовать Bitrix Environment для автоматического обновления PHP?

Цель: готовый стек от Bitrix.

Пример для CentOS

sudo /opt/webdir/bin/bx-sites -a update_php --php_ver=8.1

Скрипт обновит все компоненты окружения. Требуется предустановленная Bitrix Environment.

Проблема: скрипт может запросить пароль MySQL и перезаписать конфигурации.

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

1. Скрипт проверки совместимости модулей Bitrix с новой версией PHP

Пример
#!/bin/bash
# compare_php_requirements.sh
NEW_PHP_VERSION="8.1"
BITRIX_ROOT="/var/www/bitrix"

echo "Проверяем модули, несовместимые с PHP $NEW_PHP_VERSION ..."

# Поиск вызовов устаревших функций
if grep -r 'split(' "$BITRIX_ROOT" --include='*.php' -l &>/dev/null; then
    echo "Найдены вызовы split() - не поддерживается в PHP 7+ (удалено в 8.0)"
fi

# Проверка на ereg
if grep -r 'ereg(' "$BITRIX_ROOT" --include='*.php' -l &>/dev/null; then
    echo "Найдены вызовы ereg() - удалено в PHP 7"
fi

# Проверка версии в .settings.php
if grep -q "'php_version' =>" "$BITRIX_ROOT/bitrix/.settings.php"; then
    echo "Настройка php_version присутствует, рекомендуется обновить или удалить."
fi
Результат выполнения:
Проверяем модули, несовместимые с PHP 8.1 ...
Найдены вызовы split() - не поддерживается в PHP 7+ (удалено в 8.0)

2. Смена версии PHP глобально через update-alternatives (Debian/Ubuntu)

Пример
sudo update-alternatives --set php /usr/bin/php8.1
sudo update-alternatives --set phar /usr/bin/phar8.1
sudo update-alternatives --set phpize /usr/bin/phpize8.1
php -v
Результат:
PHP 8.1.27 (cli) (built: Feb 10 2025 12:00:00) ( NTS )
Copyright (c) The PHP Group
...

3. Сценарий автоматической установки PHP с модулями для Bitrix (RHEL/AlmaLinux)

Пример
#!/bin/bash
# install_php81_el.sh
set -e

PHP_VER="8.1"
REPO_URL="https://rpms.remirepo.net/enterprise/remi-release-9.rpm"

# Подключаем репозиторий Remi
sudo dnf install -y $REPO_URL
sudo dnf module reset php -y
sudo dnf module enable php:remi-$PHP_VER -y

# Установка PHP и модулей
sudo dnf install -y php php-fpm php-mysqlnd php-curl php-gd php-mbstring php-xml php-zip php-opcache

# Запуск пула
sudo systemctl enable --now php-fpm
echo "PHP $PHP_VER установлен и запущен"
Результат:
PHP 8.1.27 (fpm-fcgi) (built: ...)

4. Изменение версии PHP для конкретного домена в nginx (разные версии на одном сервере)

Пример
# /etc/nginx/sites-available/bitrix-site.conf
server {
    listen 80;
    server_name example.com;
    root /var/www/bitrix;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
Результат: Посетители видят сайт работающий на PHP 8.1, другие домены могут использовать другую версию.

5. Проверка настроек PHP через Bitrix API

Пример
// test.php
require($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include.php');

$check = \Bitrix\Main\PhpEnvironment\RequirementsChecker::checkAll();
echo '
';
foreach ($check['REQUIREMENTS'] as $req) {
    echo $req['NAME'].': '.$req['STATUS']."\n";
}
echo '
';
Результат:
PHP version: OK
PHP memory_limit: OK (256M)
PHP upload_max_filesize: OK (64M)
...

Обновление PHP в Bitrix - comments

En
Bitrix update php (php)