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.