До основного вмісту

cPanel PHP Selector: зміна версії PHP для сайту

Хостинг та cPanel · 25.02.2025 · 4 хв читання
Ілюстрація до статті «cPanel PHP Selector: зміна версії PHP для сайту»

PHP Selector — це інтерфейс CloudLinux, який дає кожному акаунту cPanel власний набір версій PHP і розширень, ізольований від сусідів по серверу. На відміну від класичної зв'язки Apache + mod_php, тут версію можна змінити одним кліком, не чіпаючи конфігурацію вебсервера і не чекаючи на адміністратора.

MultiPHP Manager vs PHP Selector

ІнструментДеРівень
MultiPHP ManagerWHMСервер / акаунт
MultiPHP INI EditorcPanelДомен
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

  1. Увійдіть у cPanel → Software → Select PHP Version
  2. У випадному списку виберіть потрібну версію (наприклад, 8.2)
  3. Позначте потрібні розширення галочками праворуч від списку
  4. Натисніть Set as current — зміна застосовується без перезапуску сервера
  5. Оновіть сторінку сайту і перевірте, що не з'явилось помилок 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_filesize128MМаксимальний розмір одного файлу, що завантажується
post_max_size128MМаксимальний розмір усього POST-запиту, має бути ≥ upload_max_filesize
max_execution_time300Скільки секунд скрипт може виконуватися до примусової зупинки
memory_limit512MПам'ять, доступна одному 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.

Чи була стаття корисною?
← Назад до бази знань Поставити питання підтримці