Установка 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:

Пример #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() может существенно помочь.

To Top