Як змінити версію 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 врешті-решт досягають End of Life (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 року
- End of Life (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. Цей метод особливо корисний на планах Спільного веб-хостингу, де доступ на рівні сервера обмежений.
Як це працює
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