На хостингу ZevsHost доступні PHP 7.4, 8.0, 8.1, 8.2, 8.3. Ви можете вибрати версію для кожного домену незалежно через MultiPHP Manager, а потім налаштувати конкретні директиви php.ini трьома різними способами — і від вибору способу залежить, чи спрацює налаштування взагалі.
Зміна версії PHP
cPanel → Software → MultiPHP Manager. Поставте позначку навпроти домену → виберіть версію PHP → Apply. WordPress 6.x потребує PHP 7.4+ і рекомендує 8.1 чи 8.2 для кращої продуктивності.
Налаштування php.ini через MultiPHP INI Editor
cPanel → Software → MultiPHP INI Editor → виберіть домен.
| Директива | Рекомендоване значення | Опис |
|---|---|---|
| memory_limit | 256M | Пам'ять на скрипт |
| max_execution_time | 60 | Максимум секунд |
| upload_max_filesize | 64M | Макс. розмір завантаження |
| post_max_size | 64M | Макс. розмір POST |
| max_input_vars | 3000 | Макс. змінних POST |
Пріоритет застосування налаштувань
| Спосіб | Працює з mod_php | Працює з PHP-FPM |
|---|---|---|
| MultiPHP INI Editor | Так | Так |
| .htaccess (php_value) | Так | Ні, ігнорується |
| .user.ini | Ні, не читається | Так |
Більшість сучасних серверів cPanel використовують PHP-FPM за замовчуванням, а не mod_php — це означає, що директиви php_value в .htaccess просто мовчки ігноруються, якщо сервер працює на FPM, і правка .htaccess не дасть жодного ефекту, навіть без явної помилки. MultiPHP INI Editor працює завжди, тому що редагує сам файл php.ini для обраного обробника, а не намагається перевизначити його зверху.
Типова помилка: налаштування не подіяло
Якщо після зміни версії PHP старий .htaccess посилається на неіснуючий обробник, Apache повертає 500 із записом в error_log:
[php:error] [pid 4521] AH01071: Got error 'Primary script unknown'
while reading response header from upstream, referer: https://example.com/
Це означає, що рядок виду AddHandler application/x-httpd-php82 .php посилається на обробник, якого не існує під цим іменем на сервері — наприклад, якщо версія називається ea-php82, а не просто php82. Рішення — видалити застарілу директиву AddHandler з .htaccess і керувати версією лише через MultiPHP Manager.
Друга часта пастка — спроба змінити директиву рівня PHP_INI_SYSTEM (наприклад, disable_functions чи open_basedir) через .htaccess або .user.ini. Такі директиви можна змінювати лише на рівні головного php.ini сервера або через MultiPHP INI Editor — спроба через .htaccess не викликає помилку 500, але значення просто залишається попереднім без жодних попереджень. Налагодження таких випадків забирає найбільше часу саме тому, що немає повідомлення про помилку — єдиний спосіб переконатися в реальному значенні директиви — знову відкрити phpinfo() і звірити рядок Local Value для потрібного параметра.
Налаштування через .htaccess (альтернатива)
# Встановити версію PHP для папки
<IfModule mime_module>
AddHandler application/x-httpd-php82 .php
</IfModule>
# Або через php_value
php_value memory_limit 256M
php_value max_execution_time 60
php_value upload_max_filesize 64M
Налаштування через .user.ini
# Створіть файл .user.ini в корені сайту
memory_limit = 256M
max_execution_time = 60
upload_max_filesize = 64M
post_max_size = 64M
max_input_vars = 3000
Коли MultiPHP Manager не підходить
- Потрібна різна версія PHP для двох піддиректорій одного домену, а не для всього домену цілком — MultiPHP Manager перемикає версію на рівні домену, тонке налаштування потребує .user.ini в конкретній папці
- Версія PHP у командному рядку (SSH, cron) відрізняється від версії сайту — MultiPHP Manager керує лише вебобробником PHP-FPM, а
php -vу терміналі може показувати системну версію за замовчуванням, якщо явно не вказано шлях на кшталт/usr/local/bin/ea-php82 - Потрібно змінити директиву рівня PHP_INI_SYSTEM (disable_functions, open_basedir) для окремого сайту — це робить лише адміністратор сервера в основному php.ini, акаунт cPanel такого доступу не має
- Потрібна версія PHP, якої немає у списку MultiPHP Manager — список версій формує адміністратор сервера через WHM EasyApache, додати свою версію з cPanel не можна
Перевірити поточну версію PHP
<?php phpinfo(); ?>
// Збережіть як info.php, відкрийте, видаліть після перевірки!
# Через SSH версія CLI може відрізнятися від версії сайту:
php -v
Якщо версія в браузері (через phpinfo) і версія в терміналі (через php -v) не збігаються — це нормально для cPanel: веб-версія керується MultiPHP Manager окремо від версії PHP CLI за замовчуванням у системі. Для запуску cron-скриптів використовуйте повний шлях до потрібного бінарника PHP, а не просто команду php. Детальніше про діагностику після зміни версії — у статті логи помилок у cPanel, а про сам механізм PHP Selector — у статті cPanel PHP Selector.