PHP Selector — це інтерфейс CloudLinux, який дає кожному акаунту cPanel власний набір версій PHP і розширень, ізольований від сусідів по серверу. На відміну від класичної зв'язки Apache + mod_php, тут версію можна змінити одним кліком, не чіпаючи конфігурацію вебсервера і не чекаючи на адміністратора.
MultiPHP Manager vs PHP Selector
| Інструмент | Де | Рівень |
|---|---|---|
| MultiPHP Manager | WHM | Сервер / акаунт |
| MultiPHP INI Editor | cPanel | Домен |
| PHP Selector (CloudLinux) | cPanel → Select PHP Version | Акаунт |
MultiPHP Manager налаштовує адміністратор сервера у WHM, а PHP Selector доступний прямо з cPanel і працює лише там, де сервер зібрано на CloudLinux із модулем alt-php. Якщо в cPanel немає пункту «Select PHP Version», отже сервер працює на звичайному Apache/FPM без CloudLinux, і версію PHP призначає тільки адміністратор через MultiPHP Manager.
Типова помилка після зміни версії
Найчастіша проблема — звернення до функції, якої більше немає в новій версії PHP. У журналі помилок це виглядає так:
PHP Fatal error: Uncaught Error: Call to undefined function create_function()
in /home/user/public_html/wp-content/plugins/old-plugin/init.php:47
Функція create_function() видалена в PHP 8.0 — це не баг хостингу, а застарілий код плагіна чи теми. Рішення одне: оновити плагін до версії, сумісної з PHP 8.x, або тимчасово повернутися на PHP 7.4 через той самий PHP Selector, поки автор коду не випустить патч.
Зворотна ситуація — пониження версії, коли сайт переїжджає на старіший сервер або відкочується вручну. Тоді типова помилка синтаксису на конструкціях, яких старий рушій не розуміє:
Parse error: syntax error, unexpected token "?", expecting variable (T_VARIABLE)
in /home/user/public_html/inc/helper.php on line 15
Так виглядає спроба виконати nullsafe-оператор ?-> (доданий у PHP 8.0) на рушії PHP 7.4 — єдине рішення тут повернути новішу версію через PHP Selector, а не переписувати код під старий PHP.
Зміна PHP через cPanel
- Увійдіть у cPanel → Software → Select PHP Version
- У випадному списку виберіть потрібну версію (наприклад, 8.2)
- Позначте потрібні розширення галочками праворуч від списку
- Натисніть Set as current — зміна застосовується без перезапуску сервера
- Оновіть сторінку сайту і перевірте, що не з'явилось помилок 500
Налаштування php.ini через .htaccess
# /public_html/.htaccess — перевизначення PHP-директив
php_value upload_max_filesize 128M
php_value post_max_size 128M
php_value max_execution_time 300
php_value memory_limit 512M
| Директива | Значення | За що відповідає |
|---|---|---|
| upload_max_filesize | 128M | Максимальний розмір одного файлу, що завантажується |
| post_max_size | 128M | Максимальний розмір усього POST-запиту, має бути ≥ upload_max_filesize |
| max_execution_time | 300 | Скільки секунд скрипт може виконуватися до примусової зупинки |
| memory_limit | 512M | Пам'ять, доступна одному PHP-процесу |
Цей спосіб спрацьовує не завжди: якщо PHP на сервері працює як FPM-обробник без suPHP/suexec, директиви php_value у .htaccess Apache ігнорує, і файл потрібно замінити на .user.ini або редагувати через MultiPHP INI Editor.
Увімкнення розширень PHP
# cPanel → Select PHP Version → Extensions
# Або через php.ini:
extension=imagick.so
extension=redis.so
extension=mongodb.so
| Розширення | Навіщо потрібне |
|---|---|
| imagick | Обробка зображень у WordPress і галереях |
| redis | Кеш об'єктів і сесій для важких CMS і Laravel |
| mongodb | Підключення до бази MongoDB із застосунків |
| intl | Багатомовність, форматування дат і чисел |
| soap | Інтеграція зі старими SOAP/XML API |
Коли PHP Selector не підходить
- Сервер працює на LiteSpeed без CloudLinux — пункту «Select PHP Version» у cPanel просто не буде, версію змінює лише адміністратор
- Потрібне розширення, не зібране для
alt-php— CloudLinux постачає обмежений набір пакетів, екзотичні .so-модулі так не підключити - Потрібна різна версія PHP для двох піддиректорій одного домену — PHP Selector працює на рівні акаунта/домену, а не окремої папки, тут потрібен .user.ini
- Сервер стоїть на shared IP зі спільним пулом FPM — іноді провайдер вимикає самостійну зміну версії задля стабільності пулу
Перевірка результату
# Через SSH
php -v
# Через браузер (створіть тимчасово, потім видаліть)
<?php phpinfo(); ?>
У виводі php -v має стояти саме та версія, яку ви обрали в PHP Selector — якщо версія не змінилася, перевірте, чи не залишився в .htaccess старий AddHandler на іншу версію PHP. Перелік фактично завантажених розширень показує команда php -m — звірте її вивід із тим, що позначено галочками в PHP Selector: розширення може бути увімкнене в інтерфейсі, але не підхопитися, якщо сервер використовує інший пул PHP-FPM для цього домену. Детальний розбір помилок після зміни версії — у статті про логи помилок у cPanel, а про самі версії та їх підтримку — у статті як змінити версію PHP у cPanel.