Какие версии PHP и расширения предоставляет веб-хостинг KapsuleHost для сайтов на WordPress, WooCommerce и PHP, какие настройки можно менять самостоятельно и почему изменение может вступить в силу только через пять минут.
Статические сайты, а также сайты на Node.js и Python не используют PHP. Всё, что связано с PHP для сайта, находится в одном месте: Веб-сайты, выберите сайт, Параметры, затем PHP. На этой странице находится выбор версии, настройки, которые можно изменить, запуск Composer и журнал ошибок PHP.

Выбор версии PHP
Доступны для выбора четыре версии: 8.4, 8.3, 8.2 и 8.1. Для новых сайтов по умолчанию используется 8.3.
Выбирайте самую новую версию, которую действительно поддерживает ваше программное обеспечение. Более новый PHP заметно быстрее и дольше поддерживается обновлениями безопасности. Причина не переходить сразу на самую новую версию: совместимость. Старый плагин или кастомный код, написанный много лет назад, может полностью перестать работать на версии, с которой он никогда не тестировался.
Чтобы изменить версию, выберите её и нажмите Применить версию. Изменение вступает в силу немедленно, без необходимости перезапуска с вашей стороны и без простоя.
Сначала меняйте версию PHP на staging-окружении, пройдитесь по сайту, и только потом меняйте версию на продакшене. Если нужно делать это сразу на рабочем сайте, делайте это тогда, когда можете наблюдать за процессом, и помните, что вернуться к предыдущей версии можно в один клик. См. Тестовые окружения.
Если смена версии ломает сайт, переключитесь обратно на предыдущую версию и прочитайте журнал. В ошибке будет указан файл, который не удалось запустить. См. Изменение версии PHP и Журналы ошибок.
Настройки, которые можно изменить
На странице PHP доступны пять настроек в виде выпадающих списков. Это именно те параметры, которые на практике чаще всего вызывают проблемы, поэтому они и вынесены на видное место.
| Настройка | По умолчанию | Доступные значения | Что контролирует |
|---|---|---|---|
memory_limit | 256M | 128M, 256M, 512M, 1024M, 2048M | Сколько памяти может использовать один запрос |
max_execution_time | 30 | 30, 60, 120, 300, 600 | Сколько секунд может выполняться один запрос |
upload_max_filesize | 64M | 16M, 32M, 64M, 128M, 256M | Максимальный размер одного загружаемого файла |
post_max_size | 65M | 17M, 33M, 65M, 129M, 257M | Максимальный общий размер отправки формы |
max_input_vars | 3000 | 1000, 3000, 5000, 10000 | Сколько полей может содержать одна отправка |
Что именно вам нужно:
- Загрузки не проходят выше определённого размера: увеличьте
upload_max_filesize, а вместе с ним иpost_max_size. - Большая форма или конструктор страниц теряет поля при сохранении: увеличьте
max_input_vars. Эта проблема незаметна и крайне раздражает, потому что никакой ошибки не возникает. Лишние поля просто молча отбрасываются. - Страница обрывается на полпути без ошибки: увеличьте
memory_limit. См. Лимит памяти WordPress. - Долгий импорт или экспорт прерывается по таймауту: увеличьте
max_execution_timeи подумайте о запуске задачи из командной строки. См. WP-CLI.
post_max_size должен быть больше, чем upload_max_filesize, потому что загружаемый файл передаётся внутри самого запроса. Если выбранная комбинация этому не соответствует, платформа автоматически увеличивает post_max_size за вас. Поэтому вы можете увидеть значение, которое сами не выбирали.
Почему изменение может вступить в силу только через пять минут
Это самое частое недоразумение на этой странице, поэтому стоит объяснить точно.
Ваши настройки записываются в файл .user.ini в корневом каталоге документов вашего сайта. PHP считывает этот файл, а затем кэширует его на 300 секунд, то есть на пять минут. Пока этот кэш не истечёт, PHP продолжает использовать прежние значения.
Поэтому после сохранения изменения:
- Страница ещё до пяти минут будет показывать старый лимит.
phpinfo()ещё до пяти минут будет показывать старый лимит.- Принудительное обновление страницы не поможет. Очистка кэша браузера тоже не поможет.
- Вам не нужно ничего перезапускать, и вы не можете это сделать. Просто подождите.
Если прошло больше пяти минут, а значение так и не изменилось, то проблема действительно есть, и стоит открыть заявку в поддержку.
Самостоятельное редактирование .user.ini
Вы можете редактировать .user.ini напрямую через SFTP или SSH, если вам так удобнее или если вам нужна директива, которую не предоставляет панель. Файл находится в корневом каталоге документов вашего сайта. См. Доступ по SFTP.
Формат: одна директива на строку:
memory_limit = 512M
max_execution_time = 120
Есть два важных ограничения того, что может .user.ini:
Он работает только для директив, которые PHP позволяет задавать на уровне каталога или пользователя. Все пять вышеперечисленных настроек подходят под это условие. Директивы, которые можно задать только на уровне системы, такие как disable_functions или загрузка расширения через extension=, игнорируются в файле .user.ini. Ошибки при этом не возникает, они просто ничего не делают, из-за чего люди тратят на это целый день.
Панель считывает обратно только простые ключи. Директивы, содержащие точку, такие как opcache.enable или date.timezone, учитываются PHP, но не отображаются в форме панели. Если вы задали такую директиву вручную, а затем что-то изменили через панель, проверьте файл после этого.
Веб-хостинг KapsuleHost работает на nginx, а не на Apache. Файлы .htaccess никто не читает. Директивы PHP, размещённые в файле .htaccess, такие как php_value memory_limit, здесь совершенно ничего не делают. Используйте .user.ini или панель. См. WordPress и .htaccess.
Какие расширения доступны
Стандартная сборка широкая и включает всё, что запрашивают WordPress, WooCommerce и большинство PHP-приложений.
Базы данных: mysqli, pdo_mysql, sqlite3, pdo_sqlite
Изображения: gd, imagick, exif
Кэширование: Zend OPcache, redis, memcached
Текст и локаль: mbstring, iconv, intl, gettext, ctype
XML и данные: dom, simplexml, xml, xmlreader, xmlwriter, xsl, json
Сеть: curl, soap, sockets, ftp, openssl
Математика и криптография: bcmath, sodium, hash, random
Файлы и система: fileinfo, zip, zlib, phar, posix, pcntl, shmop, calendar, tokenizer
Один момент, различающийся между версиями: расширение imap присутствует в 8.3 и более ранних версиях, но отсутствует в 8.4, поскольку оно было удалено из самого PHP в этом релизе. Если у вас есть приложение, которому оно всё ещё нужно, оставайтесь на версии 8.3 либо перенесите это приложение на современную библиотеку для работы с почтой.
Не установлены: драйверы PostgreSQL, MongoDB, Xdebug, mcrypt, а также коммерческие загрузчики кода, такие как ionCube и SourceGuardian.
Вы не можете самостоятельно включать или отключать расширения из панели. Если вашему приложению нужно что-то, чего нет в списке, откройте заявку в поддержку и опишите, что именно вы используете. Возможность добавления зависит от конкретного расширения. См. Создание заявки в поддержку.
Проверка того, что на самом деле загружено
Вместо того чтобы гадать:
- В WordPress: Инструменты, затем Здоровье сайта, затем Информация, затем Сервер. Там указана версия PHP и соответствующие лимиты.
- Через SSH:
php -vдля версии иphp -mдля загруженных расширений. См. Добавление SSH-ключей.
Не оставляйте файл phpinfo() в корневом каталоге вашего сайта. Он раскрывает ваши пути, расширения и конфигурацию любому, кто его найдёт, а автоматические сканеры ищут именно такое имя файла. Если вы создали такой файл, чтобы что-то проверить, удалите его сразу после этого.