К основному содержимому

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.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке