Стандартные расширения PHP — это модули, входящие в поставку PHP и расширяющие его базовую функциональность. Они позволяют работать с базами данных, обрабатывать изображения, выполнять HTTP‑запросы, манипулировать строками и т. д.
Типы стандартных расширений
- Core Extensions (ядро) — встроены в PHP по умолчанию и всегда доступны. Не требуют отдельной активации. Примеры: обработка массивов, строк, работа с датой и временем.
- Bundled Extensions (поставляемые с PHP) — идут в комплекте с дистрибутивом PHP, но по умолчанию могут быть отключены. Их нужно явно включить в конфигурации (php.ini). Примеры: json, zip, mbstring.
- PECL Extensions — расширения из официального репозитория PHP Extension Community Library. Некоторые из них со временем интегрируются в основную поставку.
Примеры стандартных расширений и их назначение
- mysqli / PDO — подключение к базам данных MySQL; функции: mysqli_connect(), PDO::query().
- GD — создание и обработка изображений; функция: imagecreate().
- cURL — выполнение HTTP‑запросов к API и внешним сервисам; функция: curl_init().
- JSON — кодирование и декодирование данных в формате JSON; функции: json_encode(), json_decode().
- mbstring — работа с многобайтовыми строками (включая Unicode и UTF‑8); функция: mb_strlen().
- OpenSSL — криптографические операции (шифрование, подписи); функция: openssl_encrypt().
- Zip — создание и распаковка ZIP‑архивов; функция: zip_open().
- XML — парсинг и генерация XML‑документов.
- OPcache — кэширование опкода для ускорения выполнения PHP‑скриптов.
Как проверить установленные расширения
Через функцию phpinfo()
Создайте файл info.php со содержимым:
php
<?php
phpinfo();
?>
Откройте его в браузере — в выводе будет раздел «Configure Command» (статически скомпилированные модули) и список загруженных расширений.
Через код PHP
Показать все загруженные расширения:
php
<?php
print_r(get_loaded_extensions());
?>
Проверить наличие конкретного расширения:
php
<?php
if (extension_loaded('mysqli')) {
echo "Расширение mysqli загружено";
} else {
echo "Расширение mysqli не загружено";
}
?>
Через командную строку
Выполните в терминале:
php -m
Эта команда выведет список всех установленных и загруженных расширений PHP.
Где находятся файлы расширений
Linux/Unix: обычно в каталоге /usr/lib/php/modules/ или /usr/local/lib/php/extensions/
Windows: в папке ext/ внутри директории установки PHP (например, C:\php\ext\).
Включение/выключение расширений
Чтобы активировать или деактивировать расширение, отредактируйте файл php.ini:
- Найдите строку вида extension=mbstring (или extension=php_mbstring.dll в Windows).
- Уберите точку с запятой (;) в начале строки, чтобы включить расширение, либо добавьте её — чтобы отключить.
- Перезапустите веб‑сервер (Apache, Nginx + PHP‑FPM и т. п.).
Почему может не отображаться расширение?
Как проявляется проблема? В панели ispmanager 6 в настройках PHP не отображается расширение, которое входит в стандартную сборку.
Также расширение отсутствует в списке при запросе по команде:
php -m
для нативного PHP
/opt/phpXX/bin/php -m
для альтернативных версий PHP
Причина чаще всего заключается в том, что для файла расширения присутствует зацикленная символическая ссылка. Например, так выглядит расширение posix для альтернативного PHP версии 7.3 с зацикленной символической ссылкой:
# cat /opt/php73/etc/mods-available/posix.ini
lrwxrwxrwx 1 root root 39 Dec 19 2024 /opt/php73/etc/php.d/20-posix.ini -> /opt/php73/etc/mods-available/posix.ini
Как решить проблему?
Для этого нужно поменять содержимое файла PHP-расширения в формате INI в директории /etc/php/XX/mods-available/ (путь для альтернативных версий)
PHP - /opt/phpXX/etc/mods-available/) на следующее:
extension=%ИМЯ_РАСШИРЕНИЯ%.so
Например, для расширения posix для альтернативного PHP версии 7.3 содержимое будет следующим:
extension=posix.so