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