Как изменить версию PHP в вашей хостинг-среде (полное руководство)
Управление версией PHP — одна из наиболее критических административных задач для любого владельца веб-сайта или разработчика. Независимо от того, обновляетесь ли вы, чтобы воспользоваться последними улучшениями производительности, понижаете версию для совместимости с устаревшими приложениями или исправляете уязвимости безопасности, знание того, как именно переключать версии PHP в различных хостинг-средах, является необходимым навыком. Это подробное руководство проведет вас через все доступные методы — от графического интерфейса cPanel до инструментов командной строки на VPS Hosting и выделенных серверах.
Содержание
- Почему управление версией PHP имеет значение
- Понимание версий PHP и совместимости
- Метод 1: Изменение версии PHP через cPanel (MultiPHP Manager)
- Метод 2: Изменение версии PHP через .htaccess (Apache)
- Метод 3: Изменение версии PHP через командную строку (VPS/выделенные серверы)
- Метод 4: Изменение версии PHP через php.ini
- Как проверить активную версию PHP
- Распространенные ошибки после переключения версий PHP
- Лучшие практики управления версией PHP
- Заключение
1. Почему управление версией PHP имеет значение {#why-it-matters}
PHP используется более чем на 77% всех веб-сайтов с известным серверным языком, включая основные платформы, такие как WordPress, Joomla, Drupal и Magento. Каждый основной выпуск PHP вводит значительные изменения:
- Прирост производительности: PHP 8.x значительно быстрее, чем PHP 5.x или 7.x, благодаря компилятору JIT (Just-In-Time).
- Патчи безопасности: Старые версии PHP в конечном итоге достигают конца жизни (EOL) и больше не получают обновления безопасности, оставляя ваш сайт уязвимым.
- Совместимость приложений: Некоторые старые плагины, темы или пользовательские приложения были написаны для конкретных версий PHP и могут сломаться в новых выпусках.
- Соответствие хостингу: Многие хостинг-провайдеры требуют минимальные версии PHP для поддержания стандартов безопасности сервера.
Неспособность активно управлять версией PHP может привести к нарушению функциональности, нарушениям безопасности или полному отключению веб-сайта. Понимание того, как контролировать этот параметр — независимо от типа вашего хостинга — является обязательным для любого серьезного веб-администратора.
2. Понимание версий PHP и совместимости {#understanding-versions}
Перед внесением каких-либо изменений важно понять жизненный цикл выпуска PHP и способ структурирования версий.
Нумерация версий PHP
PHP следует схеме версионирования MAJOR.MINOR.PATCH:
| Компонент | Пример | Значение |
|---|---|---|
| Major | 8 | Значительные архитектурные изменения, возможные критические изменения |
| Minor | 8.2 | Новые функции, обратно совместимые улучшения |
| Patch | 8.2.10 | Только исправления ошибок и патчи безопасности |
Жизненный цикл поддержки PHP
Каждая дополнительная версия PHP получает:
- Активную поддержку примерно на 2 года (исправления ошибок + патчи безопасности)
- Поддержку только безопасности в течение дополнительного 1 года
- Конец жизни (EOL), после чего патчи больше не выпускаются
Поддерживаемые версии PHP (по состоянию на 2024–2025)
| Версия PHP | Статус | Примечания |
|---|---|---|
| PHP 8.3 | Активная поддержка | Последний стабильный выпуск |
| PHP 8.2 | Активная поддержка | Рекомендуется для большинства приложений |
| PHP 8.1 | Только безопасность | По-прежнему широко используется |
| PHP 8.0 | EOL | Избегайте — нет патчей безопасности |
| PHP 7.4 | EOL | Только поддержка устаревшего кода |
| PHP 7.3 и ниже | EOL | Настоятельно не рекомендуется |
> Практическое правило: Всегда используйте самую высокую версию PHP, которую официально поддерживает ваше приложение. Если ваша CMS или фреймворк поддерживает PHP 8.2, нет причины использовать PHP 7.4.
3. Метод 1: Изменение версии PHP через cPanel (MultiPHP Manager) {#cpanel-method}
cPanel — это наиболее широко используемая панель управления хостингом, и она предоставляет два встроенных инструмента для управления версией PHP: MultiPHP Manager (на уровне сервера или для каждого домена) и MultiPHP INI Editor (для точной настройки параметров PHP). Если вы используете VPS с cPanel, оба инструмента доступны вам.
Шаг 1: Войдите в cPanel
- Откройте браузер и перейдите на URL входа cPanel:
https://yourdomain.com:2083 (безопасный, рекомендуется)
https://yourdomain.com/cpanelhttps://your-server-ip:2083- Введите имя пользователя cPanel и пароль.
- Нажмите Вход.
Шаг 2: Откройте MultiPHP Manager
- На панели управления cPanel прокрутите до раздела Программное обеспечение.
- Нажмите на MultiPHP Manager.
> Альтернатива: В некоторых установках cPanel это может быть обозначено как Выбрать версию PHP, Конфигурация PHP или Селектор PHP (последний распространен на хостинге на основе CloudLinux). Интерфейс может немного отличаться, но процесс одинаков.
Шаг 3: Выберите ваш домен и версию PHP
В интерфейсе MultiPHP Manager:
- Вы увидите список всех доменов и поддоменов, размещенных в вашей учетной записи.
- Установите флажок рядом с доменом, который вы хотите изменить.
- В раскрывающемся списке Версия PHP в верхней части страницы выберите нужную версию PHP (например,
PHP 8.2). - Нажмите Применить.
> Важно: Если вы используете учетную запись общего хостинга, доступные версии PHP определяются вашим хостинг-провайдером. Если вам нужна версия, которой нет в списке, свяжитесь с командой поддержки вашего хоста или рассмотрите возможность обновления до плана VPS Hosting, где у вас есть полный контроль над установленными версиями PHP.
Шаг 4: (Опционально) Настройте параметры PHP через MultiPHP INI Editor
После переключения версий вам может потребоваться отрегулировать значения конфигурации PHP:
- Вернитесь в раздел Программное обеспечение в cPanel.
- Нажмите MultiPHP INI Editor.
- Выберите ваш домен из раскрывающегося списка.
- Измените значения, такие как:
memory_limit (например, 256M)
upload_max_filesize (например, 64M)
max_execution_time (например, 300)
post_max_size (например, 64M)
Нажмите Применить, чтобы сохранить изменения.
Шаг 5: Проверьте изменение
Создайте тестовый файл, чтобы подтвердить активную версию PHP (см. раздел 7 для полных инструкций).
4. Метод 2: Изменение версии PHP через .htaccess (Apache) {#htaccess-method}
Если ваша хостинг-среда работает на Apache, но не предоставляет графический селектор PHP, вы можете контролировать версию PHP непосредственно через файл .htaccess. Этот метод особенно полезен на планах Shared Web Hosting, где доступ на уровне сервера ограничен.
Как это работает
Apache использует обработчики для определения того, как обрабатываются файлы .php. Указав пользовательский обработчик в .htaccess, вы указываете Apache использовать конкретную версию PHP для вашего сайта.
Шаг 1: Получите доступ к файлу .htaccess
Вы можете редактировать .htaccess через:
Менеджер файлов cPanel: Перейдите в public_html, найдите .htaccess, щелкните правой кнопкой мыши и выберите Редактировать.
Клиент FTP/SFTP: Подключитесь к вашему серверу и перейдите в корневой каталог веб-сайта (обычно public_html или www).
Командная строка SSH: nano /home/username/public_html/.htaccess> Примечание: .htaccess — это скрытый файл. В вашем клиенте FTP включите «Показать скрытые файлы». В менеджере файлов cPanel установите флажок «Показать скрытые файлы (dotfiles)» в настройках в правом верхнем углу.
Шаг 2: Добавьте директиву обработчика PHP
Добавьте одну из следующих строк в файл .htaccess, в зависимости от соглашения об именовании обработчика PHP вашего сервера:
Для PHP 8.2:
AddHandler application/x-httpd-php82 .phpДля PHP 8.1:
AddHandler application/x-httpd-php81 .phpДля PHP 7.4 (устаревший):
AddHandler application/x-httpd-php74 .phpАльтернативный синтаксис (используется на некоторых хостах):
# Using suPHP or FastCGI
Action php-cgi /cgi-bin/php82
AddHandler php-cgi .php> Важно: Точное имя обработчика (x-httpd-php82, x-httpd-php81 и т. д.) зависит от того, как ваш хостинг-провайдер настроил PHP на своих серверах. Если вышеуказанное не работает, проверьте документацию вашего хоста или свяжитесь с поддержкой для получения правильных имен обработчиков.
Шаг 3: Сохраните и протестируйте
Сохраните файл .htaccess и протестируйте ваш сайт. Если вы видите ошибку 500 Internal Server Error, имя обработчика, вероятно, неправильно — удалите строку и попробуйте альтернативный синтаксис.
5. Метод 3: Изменение версии PHP через командную строку (VPS/выделенные серверы) {#cli-method}
Если вы управляете собственными выделенными серверами или VPS с доступом root, у вас есть полный контроль над установкой PHP и переключением версий. Это наиболее мощный и гибкий метод.
Предварительные требования
- Доступ root или sudo к вашему серверу
- SSH клиент (Terminal на macOS/Linux, PuTTY или Windows Terminal на Windows)
- Базовое знакомство с операциями командной строки Linux
Ubuntu / Debian — использование update-alternatives
Системы на основе Ubuntu и Debian используют систему update-alternatives для управления несколькими версиями PHP одновременно.
#### Шаг 1: Добавьте репозиторий PHP Ondřej Surý
Этот PPA предоставляет несколько версий PHP для Ubuntu/Debian:
sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update#### Шаг 2: Установите нужную версию PHP
# Install PHP 8.2 and common extensions
sudo apt install -y php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl
php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-bcmath
# Install PHP 8.1 if needed
sudo apt install -y php8.1 php8.1-cli php8.1-fpm php8.1-mysql#### Шаг 3: Переключите версию PHP по умолчанию (CLI)
# View all registered PHP alternatives
sudo update-alternatives --list php
# Switch to PHP 8.2
sudo update-alternatives --set php /usr/bin/php8.2
# Or use the interactive selector
sudo update-alternatives --config phpИнтерактивный селектор отобразит что-то вроде:
There are 3 choices for the alternative php (providing /usr/bin/php).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/php8.2 82 auto mode
1 /usr/bin/php7.4 74 manual mode
2 /usr/bin/php8.1 81 manual mode
3 /usr/bin/php8.2 82 manual mode
Press <enter> to keep the current choice[*], or type selection number:Введите номер, соответствующий нужной версии, и нажмите Enter.
#### Шаг 4: Переключите версию PHP для Apache (mod_php)
# Disable current PHP module (e.g., PHP 8.1)
sudo a2dismod php8.1
# Enable new PHP module (e.g., PHP 8.2)
sudo a2enmod php8.2
# Restart Apache
sudo systemctl restart apache2#### Шаг 5: Переключите версию PHP для Nginx (PHP-FPM)
Для Nginx PHP обрабатывается через PHP-FPM. Обновите блок сервера Nginx, чтобы указать на правильный сокет FPM:
# In your Nginx server block configuration
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}Затем перезагрузите PHP-FPM и Nginx:
sudo systemctl restart php8.2-fpm
sudo systemctl restart nginxCentOS / RHEL / AlmaLinux / Rocky Linux — использование SCL или репозитория Remi
#### Вариант A: Использование Software Collections (SCL) — CentOS 7
# Install the SCL repository
sudo yum install -y centos-release-scl
# Install PHP 7.4 via SCL
sudo yum install -y rh-php74 rh-php74-php-fpm rh-php74-php-mysqlnd
# Enable PHP 7.4 for the current session
sudo scl enable rh-php74 bash
# Verify
php --version> Примечание: Изменения SCL зависят от сеанса. Чтобы сделать их постоянными для пользователя, добавьте source /opt/rh/rh-php74/enable в ~/.bashrc.
#### Вариант B: Использование репозитория Remi — CentOS 7/8, AlmaLinux, Rocky Linux
# Install EPEL and Remi repositories
sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm # For RHEL 8/AlmaLinux 8
# List available PHP streams
sudo dnf module list php
# Reset current PHP module
sudo dnf module reset php
# Enable PHP 8.2 stream
sudo dnf module enable php:remi-8.2
# Install PHP 8.2
sudo dnf install -y php php-cli php-fpm php-mysqlnd php-gd php-mbstring php-xml php-zip
# Verify
php --versionПереключение PHP для отдельных сайтов (версия PHP для каждого сайта)
На серверах, на которых размещены несколько веб-сайтов, часто требуются разные версии PHP для каждого сайта. Самый чистый подход — запустить несколько пулов PHP-FPM:
# Start PHP-FPM for multiple versions
sudo systemctl start php7.4-fpm
sudo systemctl start php8.1-fpm
sudo systemctl start php8.2-fpmЗатем настройте каждый виртуальный хост Nginx для использования другого сокета FPM:
# Site A — PHP 8.2
server {
server_name site-a.com;
root /var/www/site-a;
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}
}
# Site B — PHP 7.4 (legacy application)
server {
server_name site-b.com;
root /var/www/site-b;
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
}6. Метод 4: Изменение версии PHP через php.ini {#phpini-method}
В некоторых хостинг-средах, особенно в тех, которые используют обработчики PHP CGI или FastCGI, вы можете влиять на поведение PHP — и иногда даже на версию — через пользовательский файл php.ini, размещенный в корневом каталоге вашего веб-сайта.
Создание пользовательского php.ini
- Создайте файл с именем
php.iniв корневом каталоге вашего веб-сайта (public_html). - Добавьте ваши директивы конфигурации:
; Custom PHP configuration
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_vars = 3000
date.timezone = "UTC"> Примечание: Этот метод контролирует параметры PHP, а не обязательно саму версию PHP. Выбор версии через php.ini возможен только в определенных хостинг-установках. Для полного контроля версии используйте методы cPanel, .htaccess или командной строки, описанные выше.
7. Как проверить активную версию PHP {#verify}
После внесения каких-либо изменений всегда проверяйте, что активна правильная версия PHP. Есть несколько способов сделать это:
Метод A: Создайте тестовую страницу phpinfo()
- Создайте новый файл с именем
phpinfo.phpв корневом каталоге веб-сайта (public_html). - Добавьте следующее содержимое:
<?php
phpinfo();
?>- Перейдите на
https://yourdomain.com/phpinfo.phpв вашем браузере. - На странице будет отображена подробная информация о конфигурации PHP. Версия PHP показана в самом верху.
> Предупреждение безопасности: Удалите этот файл сразу же после тестирования. Вывод phpinfo() раскрывает конфиденциальные детали конфигурации сервера, которые могут помочь злоумышленникам.
Метод B: Проверьте через командную строку (SSH)
php --version
# or
php -vОжидаемый вывод:
PHP 8.2.10 (cli) (built: Sep 5 2023 08:12:49) (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Метод C: Проверьте через простой скрипт PHP
Для менее подробной проверки используйте этот минимальный скрипт вместо полного phpinfo():
<?php
echo 'PHP Version: ' . PHP_VERSION;
echo '<br>PHP Major Version: ' . PHP_MAJOR_VERSION;
echo '<br>PHP Minor Version: ' . PHP_MINOR_VERSION;
?>Метод D: Проверьте через администратор WordPress (для сайтов WordPress)
На панели управления WordPress:
- Перейдите в Инструменты → Здоровье сайта.
- Нажмите на вкладку Информация.
- Разверните раздел Сервер.
- Найдите версию PHP.
8. Распространенные ошибки после переключения версий PHP {#common-errors}
Переключение версий PHP иногда может вызвать проблемы. Вот наиболее распространенные проблемы и способы их решения:
Ошибка 1: Белый экран смерти (WSOD) или пустая страница
Причина: Плагин, тема или пользовательский код использует синтаксис или функции, несовместимые с новой версией PHP.
Решение:
- Включите режим отладки WordPress, добавив в
wp-config.php:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);- Проверьте
/wp-content/debug.logна предмет конкретных сообщений об ошибках. - Деактивируйте все плагины и переключитесь на тему по умолчанию, чтобы изолировать проблему.
Ошибка 2: Ошибка 500 Internal Server Error
Причина: Часто вызывается неправильным обработчиком PHP в .htaccess или расширением PHP, которое не установлено для новой версии.
Решение:
- Удалите или исправьте директиву
AddHandlerв.htaccess. - Проверьте журнал ошибок вашего сервера:
tail -f /var/log/apache2/error.logилиtail -f /var/log/nginx/error.log. - Убедитесь, что требуемые расширения PHP установлены для новой версии.
Ошибка 3: «Call to undefined function» или «Class not found»
Причина: Расширение PHP, требуемое вашим приложением (например, php-gd, php-mbstring, php-xml), не установлено для новой версии PHP.
Решение:
# Ubuntu/Debian — install missing extensions for PHP 8.2
sudo apt install php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip
# Restart web server
sudo systemctl restart apache2 # or nginxОшибка 4: Предупреждения об устаревших функциях
Причина: Ваш код использует функции, которые были объявлены устаревшими в старых версиях PHP и удалены в новых (например, функции mysql_* удалены в PHP 7.0).
Решение:
- Обновите ваш код или плагины для использования современных эквивалентов (например, ###PPT_
