Существует два способа загрузки PHP-модуля в Windows (здесь идёт речь не о скачивании модуля, а о том, чтобы PHP применял его в работе): скомпилировать его вместе с PHP или загрузить DLL. Загрузка заранее скомпилированного модуля — самый простой и рекомендуемый способ.
Загрузить модуль можно, если он существует в системе в виде файла .dll. Все модули автоматически и периодически компилируются командой PHP (подробнее о скачивании рассказано в следующем разделе).
Чтобы скомпилировать модуль внутри PHP, обратитесь к разделу документации «Сборка из исходников».
Для компиляции отдельного модуля в виде DLL-файла, обратитесь к разделу «Сборка из исходников». Если DLL-файла нет ни в стандартной поставке PHP, ни в PECL, возможно, потребуется скомпилировать его, прежде чем можно будет использовать модуль.
PHP-модулям обычно присваивают имена вида php_*.dll (где звёздочка означает имя модуля), и они размещаются в папке PHP\ext.
PHP поставляется с наиболее полезными для большей части разработчиков модулями. Такие модули называются входящими в комплект (“bundled”).
Однако, если входящие в комплект модули не дают нужной функциональности, нужный модуль всё ещё может быть найден на сайте » PECL. Библиотека модулей сообщества PHP (The PHP Extension Community Library, PECL) — это хранилище модулей PHP, в котором расположен каталог всех известных модулей, и оборудование, которое даёт место для хранения скачиваемых и разрабатываемых PHP-модулей.
Разработанный для отдельных целей модуль можно загрузить в библиотеку PECL, чтобы другие люди, которым он может быть нужен, могли извлечь из него пользу. Неплохим побочным последствием этого будет хорошая вероятность получить отзывы, благодарности (надеемся, что так и будет), сообщения об ошибках и даже исправления/патчи. Пожалуйста, прочтите » публикацию PECL перед отправкой модуля в PECL.
Часто будет доступно несколько версий каждого модуля DLL:
и т. д.
Помните, настройки модулей должны совпадать со всеми настройками бинарного файла 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().