Выбор версии PHP для сайта на 1С-Битрикс

Раздел: Веб-приложения -> Требования Bitrix

Оптимальные версии PHP для Bitrix

Основное решение: использовать PHP 8.2, так как она обеспечивает лучшую производительность, поддержку современных функций и совместима с последними версиями Bitrix (начиная с 22.0).

Для проектов, развёрнутых на актуальной редакции Bitrix, рекомендуется устанавливать PHP 8.2. Эта версия содержит улучшения безопасности и скорости, что критично для нагруженных веб-приложений. Проверка совместимости выполняется через административную панель: НастройкиНастройки продуктаСистемные требования.

Какую версию PHP выбрать, если хостинг не поддерживает 8.2?

Если провайдер предлагает только PHP 8.0 или 8.1, эти версии также подходят для большинства проектов на Bitrix (версия 22.0+). Однако часть функционала (например, новые фичи ядра) может быть недоступна. Пример настройки через файл .htaccess:

# Переключение на PHP 8.1 на Apache с mod_suexec
AddHandler application/x-httpd-php81 .php

Bitrix php version (версия php для bitrix)

После изменения необходимо перезагрузить веб-сервер или дождаться применения директив.

Возможная ошибка: 500 Internal Server Error при использовании неподдерживаемого хендлера.

Убедитесь, что модуль mod_suexec включён и указанное значение хендлера (например, php82) существует в панели хостинга. Проверить доступные версии можно командой ls /usr/local/bin/php* через SSH.

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

Для серверов под управлением Linux (Debian/Ubuntu) используется пошаговое обновление. Сначала подключается репозиторий с нужной версией, затем устанавливается пакет. Пример для PHP 8.2 на Ubuntu 22.04:

sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl -y
sudo systemctl restart php8.2-fpm

Типичная ошибка: конфликт пакетов при установке.

Перед обновлением удалите старую версию PHP и связанные модули, либо используйте apt upgrade. После установки измените конфигурацию веб-сервера (Nginx/Apache) на новый сокет PHP-FPM (например, /run/php/php8.2-fpm.sock).

Как проверить текущую версию PHP на сервере?

Самый простой способ - создать файл info.php в корне сайта с содержимым:

<?php phpinfo(); ?>

Затем открыть http://example.com/info.php в браузере. В строке PHP Version будет указана действующая версия. После проверки обязательно удалите файл из соображений безопасности.

Как настроить версию PHP для Bitrix в Docker?

Использование контейнеров позволяет изолировать окружение. Пример docker-compose.yml для Bitrix с PHP 8.2 и MySQL:

version: '3'
services:
  php:
    image: bitrix/php:8.2-fpm
    volumes:
      - ./site:/var/www/html
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./site:/var/www/html
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: bitrix

Ошибка: контейнер PHP не видит MySQL.

Убедитесь, что сервис db запущен, а имя хоста в настройках Bitrix указано как db (имя сервиса в docker-compose). Проверить связь можно через docker exec -it <php-container> ping db.

Какие меры предосторожности при переходе с PHP 7.4 на PHP 8.x?

Перед обновлением выполните полный бекап базы данных и файлов. Включите режим совместимости в Bitrix: НастройкиСистемные настройкиПрочееВключить поддержку устаревших функций. Проверьте сторонние модули - некоторые могут требовать PHP 7.4. Используйте инструмент phpstan для анализа кода:

vendor/bin/phpstan analyse --level=8 /path/to/bitrix

После обновления протестируйте все критические разделы сайта.

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

Пример 1: Определение версии PHP через командную строку

Пример
php -v
# Вывод:
PHP 8.2.10 (cli) (built: Jul 15 2023 17:52:01) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.2.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.10, Copyright (c), by Zend Technologies

Пример 2: Изменение версии PHP через .user.ini (для CGI/FastCGI)

Пример
; Файл .user.ini в корне сайта
PHP_VALUE = "memory_limit = 256M"
PHP_VALUE = "max_execution_time = 120"
; Переключение версии PHP (если поддерживается хостингом)
; PHPRC = /path/to/php8.2.ini

Результат: директивы применяются без перезагрузки веб-сервера, но только для CGI-режима.

Пример 3: Проверка совместимости Bitrix с PHP через API

Пример
<?php
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include.php');
$check = new \Bitrix\Main\Compatibility\PhpVersion();
echo $check->getRequiredVersion(); // Рекомендуемая версия
?>
// Результат: 8.2

Пример 4: Настройка PHP-FPM для Bitrix на Nginx

Пример
server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Результат: все запросы к PHP обрабатываются версией 8.2.

Пример 5: Скрипт автоматической проверки версии PHP и рекомендации

Пример
<?php
$required = '8.2.0';
$current = PHP_VERSION;
if (version_compare($current, $required, '<')) {
    echo "Требуется PHP $required или выше, установлена $current.";
} else {
    echo "Версия PHP $current подходит для Bitrix.";
}
?>
// Результат при выполнении на сервере с PHP 8.2: Версия PHP 8.2.10 подходит для Bitrix.

Пример 6: Миграция с PHP 7.4 на PHP 8.2 с помощью инструмента Rector

Пример
# Установка Rector через Composer
composer require rector/rector --dev
# Запуск проверки кода
vendor/bin/rector process /path/to/bitrix --set php80
# После исправления ошибок повторить для php81, php82

Примечание: автоматическое исправление может изменить код, поэтому обязательно делайте резервную копию.

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

En
Bitrix php version (php)