При установке новой CMS, загрузке пакетов через Composer или на странице «Здоровье сайта» в WordPress часто появляется предупреждение о том, что не найдено требуемое расширение PHP. Сам PHP даёт только базовые возможности, а работа с изображениями, распаковка архивов или правильное форматирование дат и чисел на разных языках выполняются отдельными расширениями. Чаще всего спрашивают про четыре: intl, gd, imagick и zip. Разберём, зачем нужно каждое, как проверить, включено ли оно, и как его включить.
Четыре расширения и их задачи
intl: языки, даты и числа
Расширение intl основано на библиотеке ICU и обрабатывает текст, даты, числа и валюты по правилам разных языков. Например, вывести названия месяцев на узбекском, русском или английском, показать сумму в сумах с правильными разделителями или отсортировать строки по правилам языка — всё это делается через него. Многие современные фреймворки и CMS (например, часть хелперов Laravel, компоненты Symfony, Magento) требуют intl или настоятельно его рекомендуют. Для узбекского языка в ICU есть отдельные локали для латиницы и кириллицы:
$date = new IntlDateFormatter('uz_Latn_UZ', IntlDateFormatter::LONG, IntlDateFormatter::NONE);
echo $date->format(new DateTime('2026-03-21'));
$money = new NumberFormatter('uz_Latn_UZ', NumberFormatter::CURRENCY);
echo $money->formatCurrency(150000, 'UZS');
Точный вид результата зависит от версии ICU на сервере, поэтому проверьте его у себя.
gd: базовая работа с изображениями
gd позволяет читать изображения, менять размер, обрезать, накладывать надписи и водяные знаки, сохранять в другой формат. CMS используют его для создания миниатюр из загруженных картинок, для капчи и графиков. GD поддерживает несколько форматов, но поддержка WebP или AVIF зависит от того, как собрано расширение. Узнать это можно функцией gd_info().
imagick: более мощная обработка изображений
imagick — расширение для работы с ImageMagick. Оно понимает больше форматов, чем GD, лучше сохраняет цвет и качественнее уменьшает большие изображения. Превью первой страницы PDF обычно тоже делают через imagick, но для этого на сервере нужен Ghostscript, а политика безопасности ImageMagick должна разрешать работу с PDF. Если imagick доступен, WordPress предпочитает его для изображений вместо GD.
zip: работа с архивами
Расширение zip добавляет в PHP класс ZipArchive. Через него сайт создаёт архивы, распаковывает загруженные файлы и собирает результаты экспорта в один файл. Если нет ни расширения zip, ни программы unzip на сервере, Composer может перейти на более медленный способ загрузки пакетов или выдать предупреждение. На это расширение опираются и многие плагины резервного копирования, и библиотеки для создания Excel-файлов (формат XLSX по сути является zip-архивом).
Как проверить, включено ли расширение
Надёжнее всего проверять PHP, который работает через веб-сервер: PHP в командной строке может быть другой версии или с другими настройками. Положите в папку сайта временный файл, откройте его в браузере и после проверки удалите:
<?php
foreach (['intl', 'gd', 'imagick', 'zip'] as $ext) {
echo $ext . ': ' . (extension_loaded($ext) ? 'есть' : 'нет') . "<br>";
}
При доступе по SSH можно посмотреть и из командной строки. Только убедитесь, что это тот же PHP, что и у сайта, особенно если на сервере установлено несколько версий:
php -v
php -m | grep -E 'intl|gd|imagick|zip'
Как включить на виртуальном хостинге
На виртуальном хостинге расширения устанавливаются на уровне сервера, а клиент управляет ими только в рамках того, что разрешает панель. В ISPmanager для сайта можно выбрать версию PHP, а в зависимости от настроек сервера для выбранной версии может отображаться и список расширений. Иногда дело не в отсутствии расширения, а в том, что для сайта выбрана старая версия PHP: при переходе на новую нужные расширения появляются. Перед сменой версии проверьте, совместимы ли с ней ваша CMS и плагины.
Клиенты sayt.uz входят в панель со страницы хостинга в кабинете sayt.uz. Если включить нужное расширение самостоятельно не получается, напишите тикет в техподдержку из кабинета и укажите сайт, версию PHP и нужное расширение.
Установка на собственном VPS
На VPS расширения устанавливаете вы сами. В Ubuntu 24.04 стандартный PHP — 8.3, а расширения ставятся отдельными пакетами. После установки нужно перезапустить PHP-FPM, иначе сайт не увидит новое расширение:
sudo apt update
sudo apt install php8.3-intl php8.3-gd php8.3-zip php-imagick
sudo systemctl restart php8.3-fpm
php -m | grep -E 'intl|gd|imagick|zip'
Если PHP работает как модуль Apache, вместо php8.3-fpm перезапускается служба apache2. Для другой версии PHP поменяйте цифры в названиях пакетов. Если расширение установлено, но не включено, в Debian и Ubuntu поможет команда phpenmod, например sudo phpenmod intl.
Пример: портал учебного центра в Андижане
Для учебного центра в Андижане на example.uz написали портал для слушателей на Laravel. На компьютере разработчика всё работало, а на сервере composer install остановился с ошибкой «Root composer.json requires PHP extension ext-intl». Кроме того, функция создания превью сертификатов об окончании курса требовала imagick. Проверка показала, что для сайта была выбрана старая версия PHP без включённого intl. Версию PHP обновили в панели, недостающие расширения включили через техподдержку, после чего composer install прошёл успешно, а превью сертификатов стали создаваться корректно.
Несколько практических советов
- Указывайте нужные расширения в
composer.jsonв виде"ext-intl": "*"— тогда отсутствие расширения обнаружится уже на этапе установки. - Если для обработки изображений доступны и GD, и imagick, выясните, какое из них использует приложение: качество результата может отличаться.
- После включения расширения не забудьте удалить временный проверочный файл.