Установка PHP-модуля в Windows
В ОС 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-модуль выбирают по следующим признакам:
-
Номер версий, в котором совпадают хотя бы две первые цифры
-
Настройки потокобезопасности
-
Архитектура процессора: x86, x64 или другая
-
Настройки отладки
-
И другие характеристики
PHP загрузит модуль, только если характеристики модуля
соответствуют параметрам исполняемого PHP-файла.
Следующий PHP-скрипт выведет все
настройки PHP:
Или запустите из командной строки:
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().