В ОС Windows PHP-модули подключают двумя способами: либо компилируют PHP с модулем, либо загружают модуль как DLL-файл. Загрузка заранее скомпилированного модуля — самый простой и предпочтительный способ.
Модуль загрузится, только если доступен в системе как файл с расширением .dll. Группа разработчиков PHP автоматически и периодически компилирует PHP-модули. Подробнее о скачивании рассказывает следующий раздел.
О компиляции модуля вместе с PHP рассказывает раздел документации «Сборка из исходного кода».
Для компиляции отдельного модуля в виде DLL-файла, обратитесь к разделу «Сборка из исходного кода». Возможно, перед подключением модуль потребуется скомпилировать, если DLL-файла не оказалось ни в стандартной поставке PHP, ни в репозитории PECL.
PHP-модулям часто присваивают названия вида php_*.dll, где звёздочка — название модуля, и размещают модули в папке PHP\ext.
PHP поставляется с наиболее полезными для большей части разработчиков модулями. Такие модули называются встроенными.
На сайте » PECL доступны модули, которые решают близкое к 100 % количество задач, поэтому хотя бы один необходимый модуль найдётся в репозитории, если встроенные модули не содержат функций, которые потребовались программисту. Библиотека модулей PHP-сообщества (англ. The PHP Extension Community Library, PECL) — каталогизированный репозиторий PHP-модулей и инфраструктура для хранения, скачивания и разработки модулей.
Одни пользователи размещают в репозитории PECL модули, которые разработали для конкретных целей, а другие пользователи, которым потребовались аналогичные функции, скачивают модули. Разработчики модулей получают шанс на обратную связь, благодарности (надеемся, что так и будет), сообщения об ошибках и даже исправление ошибок или другие полезные изменения. Примечание » на странице отправки нового PECL-модуля даёт инструкции, которые потребуется выполнить перед отправкой модуля в репозиторий PECL.
DLL-модуль выбирают по следующим признакам:
И другие характеристики
PHP загрузит модуль, только если характеристики модуля соответствуют параметрам исполняемого PHP-файла. Следующий PHP-скрипт выведет все настройки PHP:
Пример #1 Вызов функции phpinfo()
<?php
phpinfo();
?>Или запустите из командной строки:
drive:\path\to\php\executable\php.exe -i
Самый распространённый способ загрузить PHP-модуль — включить модуль в конфигурационном файле php.ini. Обратите внимание, файл php.ini уже содержит записи для части модулей, и для активации достаточно удалить точку с запятой.
Обратите внимание, начиная с PHP 7.2.0 вместо названия файла модуля возможно указать только название модуля. Такой способ становится рекомендованным для определения списка загружаемых модулей, поскольку это самый простой и платформонезависимый способ. Поддержка названий файлов всё ещё сохраняется для совместимости с предыдущими версиями.
;extension=php_extname.dll
extension=php_extname.dll
; Начиная с PHP 7.2 лучше делать так: extension=extname zend_extension=another_extension
Однако некоторые веб-серверы создают путаницу, поскольку не используют файл php.ini, который содержится в дистрибутиве PHP. Путь расположения файла php.ini указывается в выводе функции phpinfo():
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\8.2\php.ini
После активации модуля сохраняют файл php.ini, перезагружают веб-сервер и повторно проверяют вывод функции phpinfo(). Для нового модуля появится отдельный раздел.
Лог-файлы помогают узнать причину ошибки, когда модуль не появляется в выводе функции phpinfo().
При работе с PHP из командной строки, в режиме CLI, сообщение об ошибке загрузки модуля появится на экране.
При работе PHP с веб-сервером расположение и формат логов определяет ПО сервера. Для поиска путей к журналам знакомятся с документацией к веб-серверу, поскольку сам PHP не устанавливает место хранения серверных логов.
Часто проблемы возникают из-за неправильного расположения DLL-модуля и DLL-файлов, от которых зависит модуль, неправильного значения директивы "extension_dir" в файле php.ini и из-за несовпадения настроек компиляции.
Вероятная причина проблемы, которая возникает из-за несовпадения настроек компиляции, состоит в скачивании неправильного DLL-файла. Попробуйте скачать модуль снова с правильными настройками. И снова в таких ситуациях помогает информация, которую выводит функция phpinfo().