# Расширения и настройки PHP

Source: https://support.kapsulehost.com/ru-ru/php-extensions-and-ini

Какие версии PHP и расширения предоставляет веб-хостинг KapsuleHost для сайтов на WordPress, WooCommerce и PHP, какие настройки можно менять самостоятельно и почему изменение может вступить в силу только через пять минут.

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

![Страница PHP для сайта в KPanel, с выбором версии и доступными настройками](https://support.kapsulehost.com/help/screenshots/php-extensions-and-ini.2214ab47.webp)

## Выбор версии PHP

Доступны для выбора четыре версии: **8.4, 8.3, 8.2 и 8.1**. Для новых сайтов по умолчанию используется 8.3.

Выбирайте самую новую версию, которую действительно поддерживает ваше программное обеспечение. Более новый PHP заметно быстрее и дольше поддерживается обновлениями безопасности. Причина не переходить сразу на самую новую версию: совместимость. Старый плагин или кастомный код, написанный много лет назад, может полностью перестать работать на версии, с которой он никогда не тестировался.

Чтобы изменить версию, выберите её и нажмите **Применить версию**. Изменение вступает в силу немедленно, без необходимости перезапуска с вашей стороны и без простоя.

> **Tip:** Сначала меняйте версию PHP на staging-окружении, пройдитесь по сайту, и только потом меняйте версию на продакшене. Если нужно делать это сразу на рабочем сайте, делайте это тогда, когда можете наблюдать за процессом, и помните, что вернуться к предыдущей версии можно в один клик. См. [Тестовые окружения](https://support.kapsulehost.com/ru-ru/staging-environments).

Если смена версии ломает сайт, переключитесь обратно на предыдущую версию и прочитайте журнал. В ошибке будет указан файл, который не удалось запустить. См. [Изменение версии PHP](https://support.kapsulehost.com/ru-ru/changing-php-version) и [Журналы ошибок](https://support.kapsulehost.com/ru-ru/error-logs).

## Настройки, которые можно изменить

На странице 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](https://support.kapsulehost.com/ru-ru/wordpress-memory-limit).
- **Долгий импорт или экспорт прерывается по таймауту**: увеличьте `max_execution_time` и подумайте о запуске задачи из командной строки. См. [WP-CLI](https://support.kapsulehost.com/ru-ru/wordpress-wp-cli).

> **Note:** `post_max_size` должен быть больше, чем `upload_max_filesize`, потому что загружаемый файл передаётся внутри самого запроса. Если выбранная комбинация этому не соответствует, платформа автоматически увеличивает `post_max_size` за вас. Поэтому вы можете увидеть значение, которое сами не выбирали.

## Почему изменение может вступить в силу только через пять минут

Это самое частое недоразумение на этой странице, поэтому стоит объяснить точно.

Ваши настройки записываются в файл `.user.ini` в корневом каталоге документов вашего сайта. PHP считывает этот файл, а затем **кэширует его на 300 секунд**, то есть на пять минут. Пока этот кэш не истечёт, PHP продолжает использовать прежние значения.

Поэтому после сохранения изменения:

- Страница ещё до пяти минут будет показывать старый лимит.
- `phpinfo()` ещё до пяти минут будет показывать старый лимит.
- Принудительное обновление страницы не поможет. Очистка кэша браузера тоже не поможет.
- Вам не нужно ничего перезапускать, и вы не можете это сделать. Просто подождите.

Если прошло больше пяти минут, а значение так и не изменилось, то проблема действительно есть, и стоит открыть заявку в поддержку.

## Самостоятельное редактирование `.user.ini`

Вы можете редактировать `.user.ini` напрямую через SFTP или SSH, если вам так удобнее или если вам нужна директива, которую не предоставляет панель. Файл находится в корневом каталоге документов вашего сайта. См. [Доступ по SFTP](https://support.kapsulehost.com/ru-ru/sftp-access).

Формат: одна директива на строку:

```ini
memory_limit = 512M
max_execution_time = 120
```

Есть два важных ограничения того, что может `.user.ini`:

**Он работает только для директив, которые PHP позволяет задавать на уровне каталога или пользователя.** Все пять вышеперечисленных настроек подходят под это условие. Директивы, которые можно задать только на уровне системы, такие как `disable_functions` или загрузка расширения через `extension=`, игнорируются в файле `.user.ini`. Ошибки при этом не возникает, они просто ничего не делают, из-за чего люди тратят на это целый день.

**Панель считывает обратно только простые ключи.** Директивы, содержащие точку, такие как `opcache.enable` или `date.timezone`, учитываются PHP, но не отображаются в форме панели. Если вы задали такую директиву вручную, а затем что-то изменили через панель, проверьте файл после этого.

> **Warning:** Веб-хостинг KapsuleHost работает на nginx, а не на Apache. Файлы `.htaccess` никто не читает. Директивы PHP, размещённые в файле `.htaccess`, такие как `php_value memory_limit`, здесь совершенно ничего не делают. Используйте `.user.ini` или панель. См. [WordPress и .htaccess](https://support.kapsulehost.com/ru-ru/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.

Вы не можете самостоятельно включать или отключать расширения из панели. Если вашему приложению нужно что-то, чего нет в списке, откройте заявку в поддержку и опишите, что именно вы используете. Возможность добавления зависит от конкретного расширения. См. [Создание заявки в поддержку](https://support.kapsulehost.com/ru-ru/opening-a-support-ticket).

## Проверка того, что на самом деле загружено

Вместо того чтобы гадать:

- **В WordPress**: Инструменты, затем Здоровье сайта, затем Информация, затем Сервер. Там указана версия PHP и соответствующие лимиты.
- **Через SSH**: `php -v` для версии и `php -m` для загруженных расширений. См. [Добавление SSH-ключей](https://support.kapsulehost.com/ru-ru/adding-ssh-keys).

> **Warning:** Не оставляйте файл `phpinfo()` в корневом каталоге вашего сайта. Он раскрывает ваши пути, расширения и конфигурацию любому, кто его найдёт, а автоматические сканеры ищут именно такое имя файла. Если вы создали такой файл, чтобы что-то проверить, удалите его сразу после этого.

## Похожие материалы

- [Изменение версии PHP](https://support.kapsulehost.com/ru-ru/changing-php-version)
- [Лимит памяти WordPress](https://support.kapsulehost.com/ru-ru/wordpress-memory-limit)
- [Журналы ошибок](https://support.kapsulehost.com/ru-ru/error-logs)
- [Коды ошибок HTTP](https://support.kapsulehost.com/ru-ru/http-error-codes)
- [Медленная работа сайта и ограничения ресурсов](https://support.kapsulehost.com/ru-ru/site-slow-resource-limits)
- [WordPress и .htaccess](https://support.kapsulehost.com/ru-ru/wordpress-htaccess)
- [Глоссарий хостинга](https://support.kapsulehost.com/ru-ru/glossary)
