Способы обновления PHP в среде Bitrix Framework
Обновление версии PHP для Bitrix: варианты и инструкции
Как выполнить обновление PHP на сервере с Ubuntu через штатный менеджер пакетов?
Цель: обеспечить совместимость Bitrix с актуальной версией PHP (рекомендовано 8.1 или 8.2).
Пошаговая инструкция для Ubuntu (20.04/22.04)
- Добавить репозиторий с новыми версиями PHP (если требуется):
sudo add-apt-repository ppa:ondrej/php -y sudo apt updateBitrix update php (обновление php в bitrix)
- Установить нужную версию 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 - Отключить старую версию и включить новую:
(для nginx переключение пулаsudo a2dismod php7.4 sudo a2enmod php8.1 sudo systemctl restart apache2php8.1-fpm). - Проверить версию:
Результат:php -vPHP 8.1.27 (cli) (built: Feb 10 2025 12:00:00) ( NTS )
- Настроить 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, пересобрать образ, применить изменения.
Как обновить 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.
Как переключить версию 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.
Расширенные примеры кода для обновления 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) ...