Встановлення 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()

Loading...

Або запустіть з командного рядка:

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() може суттєво допомогти.