Выбор версии PHP для сайта на 1С-Битрикс
Оптимальные версии 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 .phpBitrix 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
Примечание: автоматическое исправление может изменить код, поэтому обязательно делайте резервную копию.