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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ #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().

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ 4 notes

up
4
j dot o dot l dot a dot n at bk dot ru ΒΆ
2 years ago
In order for php to see extensions, it is necessary to specify the root folder when specifying the address to the directory with extensions in php.ini. For example extension_dir = "php/ext"
up
3
dario at 4assistance dot com ΒΆ
3 years ago
On windows, drop your extension's dependencies into a dir of your choice, but outside of your php install. Add that dir to a path environment variable used by your php. Add <extension_name>.dll to your php's extension_dir, and update your php.ini (unless you're simply testing with php's cli).
up
0
bk at kaelberer-aio dot de ΒΆ
3 years ago
In addition to the helpful comments of ferdnyc and dario: A few weeks ago I've set up a new W11 using PHP 8.1. (as a module) with Apache. It was working fine.
Today i wanted to install the PECL-extension php-amqp. This extension comes with two additional files that are said to be placed in PHPs main directory. It worked fine running from the command prompt but with Apache the extension failed with "Unable to load dynamic library 'amqp'".
I tried 100 ways to notate paths in php.ini and http.conf: c:, C:, \, \\, /, ". I also installed a new PHP in the root to get rid of the space in the path. It did not help.
When reading dario's comment i stumbeled across him mentioning "path environment variable". I checked that in Window's settings and I realized, that i had added PHP's path to the USER'S path-settings, but not to the SYSTEM'S path. That is why it worked in the command prompt but not when starting Apache as a service. After adding it there it worked fine.
up
-1
ferdnyc at gmail dot com ΒΆ
3 years ago
This is handwaved somewhat in the "Resolving problems" section, but mis-location of (non-extension) DLL files is often a problem when installing PHP extensions on Windows.

Many PHP extensions come with not only the extension DLL, but supplementary DLLs that are required by that extension. (For example, php_luasandbox.dll comes with lua5.1.dll, the lua interpreter it sandboxes.) Those other DLLs should go into the same directory as the php.exe binary, NOT the extension directory.

So, if php_luasandbox.dll is installed at C:\PHP8.1\ext\php_luasandbox.dll, the interpreter would be located at C:\PHP8.1\lua5.1.dll. That allows the PHP binary C:\PHP8.1\php.exe to find those additional DLLs when required.