1

В моем файле apache error.log есть следующая строка: Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'ext\php_curl.dll' - Указанная процедура не найдена.\ R \ n в поле Неизвестно в строке 0

Однако я проверил свою переменную PATH и в списке есть каталог PHP, папка ext настроена правильно, и в папке существует php_curl.dll.

Я переустановил перераспределение vc++, чтобы убедиться, что там нет проблем.

Во время проверки я обнаружил, что все следующие ddl присутствуют при открытии их из прогона (для проверки их можно найти из переменной PATH):

  • ws2_32.dll
  • wldap32.dll
  • php7ts.dll
  • libeay32.dll
  • libssh2.dll
  • nghttp2.dll
  • ssleay32.dll
  • normaliz.dll
  • kernel32.dll
  • vcruntime140.dll
  • API-мс-беспроигрышная элт-STDIO-l1-1-0.dll
  • API-мс-беспроигрышная элт-строка-l1-1-0.dll
  • API-мс-беспроигрышная элт-кучного l1-1-0.dll
  • API-мс-беспроигрышная элт-новообращенный-l1-1-0.dll
  • API-мс-беспроигрышная элт-файловая-l1-1-0.dll
  • API-мс-беспроигрышная элт-среда-l1-1-0.dll
  • API-MS-WIN-элт-утилита l1-1-0.dll
  • API-мс-беспроигрышная элт-время l1-1-0.dll
  • API-мс-беспроигрышная элт-среда-l1-1-0.dll

Я не уверен в том, какие зависимости может иметь php_curl, если бы вы могли предоставить какие-либо предложения, это будет с благодарностью.

Дополнительная информация о системе: Компилятор MSVC14 (Visual C++ 2015)
Архитектура x64
Платформа Windows 7
PHP версия 7.1.4
Apache версия 2.4

2 ответа2

1

У меня была такая же проблема, но она проявлялась только при запуске PHP через Apache. В CLI все было хорошо - cURL был показан в phpinfo() .

Решением было заменить несколько файлов в каталоге bin Apache:

  • libeay32.dll
  • ssleay32.dll
  • libssh2.dll
  • nghttp2.dll

Когда PHP запускается через Apache, его каталог bin вероятно, имеет приоритет над системной %PATH% и поэтому расширение curl в PHP использует библиотеки из Apache, что приводит к несоответствию версий (библиотеки Apache, кажется, старше, чем требуется).

Следует также отметить, что это поведение началось (afaik) с PHP 7.1.

0

После выполнения вышеупомянутого dll-копирования убедитесь, что в вашем php.ini есть следующие строки и что файл perm есть. Не забудьте поставить свои пути.

[curl] curl.cainfo = "C:\php\extras\ssl\cacert.pem"

[openssl] openssl.cafile = "C:\php\extras\ssl\cacert.pem" openssl.capath = "C:\php\extras\ssl\cacert.pem"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .