Apache 2.4.23 PHP7.x Windows 10 x64 php_curl не работает

Я пытался обновить свой сервер до последних Apache 2.4.23 и PHP 7.1, но он не смог загрузить библиотеку php_curl, не знаю почему.

PHP Warning:  PHP Startup: Unable to load dynamic library 'ext\\php_curl.dll' - The specified procedure could not be found.\r\n in Unknown on line 0

Я пробовал следовать

  • Изменить путь расширения на полный путь, например d:\webserver\php\ext
  • Скопируйте php_curl.dll, libssh2.dll, libeay32.dll, ssleay32.dll в System32, php/ext, apache/bin, php
  • Добавлена ​​системная переменная php path
  • Попробовали как PHP7, так и PHP7.1.
  • Все это x64, и все остальные расширения успешно загружены и работают на сервере, но только php_curl не работает.
  • uncommented extension в php.ini

  • Apache 2.4.23 x64
  • PHP7 и также попробовал PHP7.1 (Thread Safe) x64
  • Windows 10 x64

Ответ 1

Поместите файлы libeay32.dll, libssh2.dll, ssleay32.dll в каталог dir, указанный в директиве ServerDoot httpd.conf. Эти DLL файлы можно найти в папке php root.

Причины:

Проблема в том, что php_curl.dll требует доступа к следующим библиотекам при загрузке: libeay32.dll, libssh2.dll, ssleay32.dll, и это не имеет смысла, если вы помещаете их в. /php/ext dir или если вы добавляете расширения php в корневом каталоге php.

Конечно, вы можете поместить их в c:\Windows или в какую-либо глобальную папку, определенную в PATH, но если вы этого не хотите, и хотите, чтобы ваша установка apache + php была переносимой:

Путь, указанный в ServerRoot в httpd.conf, рассматривается как домашний путь для php. Поведение похоже на ситуацию, когда вы включаете файл. /path/to/some.php в./index.php и домашний путь для файла some.php./Dir, где находится index.php.

В шортах просто поместите эти три библиотеки DLL в каталог, указанный в httpd.conf директиве ServerRoot, и php_curl.dll не перестанет загружаться снова.