Curl dll php: PHP: Установка — Manual

curl — PHP не может загрузить расширение php_curl.dll

Продолжение моего вчерашнего сообщения (Включение cURL с PHP)

Проблема в том, что PHP не может загрузить php_curl.dll. Я попробовал несколько шагов, включая раскомментирование extension=php_curl.dll , убедившись, что зависимости libeay32.dll и ssleay32.dll eixst в пути, повторная загрузка php_curl.dll, замена старого и, наконец, копирование файла в папку System32.

Я использую Apache 2.2 и PHP 5.4.14. Я установил оба, используя их отдельные пакеты; Я не использую XAMP или WAMP. Я использую Windows 7 64-бит.

Будем признательны за любую помощь.

  • php
  • завиток

8

libeay32.dll и ssleay32.dll должны быть доступны по пути для успешной загрузки php_curl.dll .

Но копирование их в Apache ServerRoot , \bin\ Apache , \System32\ Window или, что еще хуже, в основной каталог Windows — плохой хак и может даже не работать с более новыми версиями PHP.

Правильный способ сделать это — добавить путь PHP к переменной Windows Path .

  1. В Панель управления -> Система щелкните Дополнительные параметры системы или нажмите WIN + R и введите SystemPropertiesAdvanced
  2. Нажмите кнопку Переменные среды .
  3. В разделе System Variables вы найдете переменную Path . Отредактируйте его и добавьте C:\PHP; к нему — или любой другой путь к вашей папке PHP.
    (Подсказка: если ваша папка PHP содержит такие пробелы, как C:\Program Files\PHP , вам может понадобиться использовать здесь короткую форму имени файла, например C:\Progra~1\PHP .)
  4. Затем полностью остановите Apache и запустите его снова (простого перезапуска может быть недостаточно).

Обновление 2017-05:
Я изменил приведенные выше инструкции на , добавляя к переменной Path с путем PHP вместо , добавляя к ней . Это гарантирует, что библиотеки DLL в пути PHP используются, а не какие-либо другие (устаревшие) версии в других путях системы.

Обновление 2018-04:
Если вы уже выбрали неверный путь и скопировали какие-либо библиотеки DLL PHP в пути Apache или Windows, то я настоятельно рекомендую удалить их снова! Если вы этого не сделаете, у вас могут возникнуть проблемы, когда вы позже попытаетесь обновить PHP. Если новая версия PHP содержит новые версии этих библиотек DLL, но ваши старые библиотеки DLL все еще остаются в системных путях или путях веб-сервера, эти старые библиотеки DLL могут быть найдены в первую очередь. Это, безусловно, предотвратит запуск интерпретатора PHP. Такие ошибки может быть очень трудно понять и устранить. Так что лучше убирать теперь и удалите любые из упомянутых DLL из путей Windows и Apache, если вы их туда скопировали.
(Спасибо @EdmundTam и @WasimA. за указание на эту проблему в комментариях!)

Обновление 2019-10:
Совет: чтобы найти все копии этих DLL и проверить, не поместили ли вы их в неправильное папки, вы можете использовать следующие команды в окне командной строки Windows:

 dir c:\libeay32. dll /s
каталог c:\ssleay32.dll /s
 

Имейте в виду, что выполнение этих команд может занять некоторое время, так как они выполняют поиск по всей структуре каталогов системного диска C:.

Обновление 2020-08:
Если ваша папка PHP содержит пробелы (например, C:\Program Files\PHP ), вам может потребоваться использовать форму короткого имени файла в переменной Path на шаге 3 (например, C :\Progra~1\PHP ). Спасибо @onee за этот совет!

23

В версии PHP 5.6.x Вы должны сделать следующее:

Переместить в папку Windows\system32 DLLs из папки php :

libssh3.dll, ssleay32.dll, libeay32.dll и php_curl.dll из папки php ext

Переместить в Apache24\bin папка из папка php :

 libssh3.dll
 

Также не забудьте раскомментировать extension=php_curl. dll в php.ini

7

WINDOWS Apache 2.4.x + PHP 7.0.x РЕШЕНИЕ ЗДЕСЬ:

Решение: поставить libeay32.dll , libssh3.dll , ssleay32.dll файлов в каталоге, указанном в директиве httpd.conf ServerRoot. Эти dll можно найти скомпилированными в корневой папке php.

Причины:

Проблема php_curl.dll требует доступа к следующим библиотекам при загрузке: libeay32.dll , libssh3.dll , ssleay32.dll 900 06 и нет смысла их вставлять. /php/ext каталог или если вы поместите расширения PHP в корневой каталог PHP.

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

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

Короче говоря, просто поместите эти три dll прямо в каталог, который вы указали в директиве httpd.conf ServerRoot, и php_curl.dll снова загрузится.

9

Вы загружаете .dll , поэтому ваша ОС должна быть Windows.

Сначала проверьте, какой файл php.ini вы используете, запустив phpinfo()

Затем проверьте, где находится ваша папка с расширениями, проверив атрибут extension_dir в этом файле.

Затем убедитесь, что php_curl.dll присутствует в этой папке. Если не копировать.

Перезапустите apache и проверьте, работает ли он.

Поскольку вы устанавливали пакеты по отдельности, также сделайте следующее:

Скопируйте файл dll из php_installation_folder/extensions в apache_installation_folder/bin

6

Обычно это ошибка несоответствия версии OpenSSL между Apache и PHP. В случае, если Apache загружает PHP как модуль DSO, будут использоваться его собственные версии OpenSSL (dll и библиотеки). Таким образом, если расширению PHP требуется более новая версия, оно может не найти соответствующий интерфейс внутри загружаемой Apache DLLS и не будет работать.

Поскольку для загрузки требуется расширение PHP, вам нужны соответствующие DLL-файлы, по крайней мере, той версии, которую запрашивает модуль PHP.
Предположим, что вы используете последние сборки как для Apache, так и для PHP, и оба были собраны с одной и той же версией MVC, вы можете скопировать следующие файлы:0003

  • libcrypto-1_1.dll
  • libcrypto-1_1-x64.dll
  • libcurl.dll
  • libsasl.dll
  • libssh3.dll
  • libssl-1_1.dll
  • libssl-1_1-x64.dll
  • nghttp2.dll
  • libeay32.dll (если существует в вашем дистрибутиве PHP)
  • ssleay32.dll (если существует в вашем дистрибутиве PHP)

из корневой папки PHP в папку Apache2/bin, если вы уверены, что сборка PHP новее, чем сборка Apache.

В противном случае вы можете скопировать те же файлы из BIN Apache в корень PHP.

В любом случае заранее сделайте резервную копию содержимого папок APache и PHP.

Добавление пути PHP в качестве переменной среды отдает приоритет этому пути для загрузки соответствующих библиотек DLL и может решить проблему. Однако вы теряете в переносимости сервера. Кроме того, если вы также добавили Apache PATH в качестве переменной, а версии OpenSSL сильно отличаются (вплоть до загрузки разных связанных файлов DLL), может произойти много дерьма.

1

Убедитесь, что ваши DLL-файлы Apache SSH загружаются правильно. При новой установке мне пришлось загрузить и загрузить в мой каталог bin apache следующую dll «libssh3.dll»

После загрузки ssl dll cURL смог загрузиться без проблем.

Вы можете скачать его по ссылке ниже:

http://windows.php.net/downloads/pecl/releases/ssh3/0.12/

1

Решение:

 Шаг 1: Раскомментируйте php_curl. dll из php.ini
Шаг 2: Скопируйте следующие три файла из установленного каталога php, то есть «C:\\php7».
libeay32.dll,
libssh3.dll,
ssleay32.dll
Шаг 3: Вставьте файлы в два места
Директива httpd.conf ServerRoot. то есть "C\Apache24"
каталог bin апача. то есть "C\Apache24\bin"
Шаг 4: Перезапустите апач.
 

Вот и все. Я решаю проблему таким образом. Надеюсь, это сработает для вас.

Решение приведено здесь.
https://abcofcomputing.blogspot.com/2017/06/php7-unable-to-load-phpcurldll.html

Перепробовав все здесь, мне пришлось просто обновить Apache до более новой версии , чтобы расширение curl заработало.

Я обновлял PHP с 7.0.2 до 7.1.15, после чего curl не работал. Единственный способ исправить это — обновить Apache (версия 2.4.18) до последней версии 2.4.29.

Не нужно было копировать файлы lib/ssleay dll ни в Apache, ни в Windows — возможно, потому, что у меня уже есть папка PHP в моем системном пути.

Запуск Windows 10, 64-разрядная, поточно-ориентированная версия, VC14.

Вставить в файл httpd.conf

 LoadFile "D:/DevKit/PHP7.1/libeay32.dll"
Загрузить файл "D:/DevKit/PHP7.1/libssh3.dll"
Загрузить файл "D:/DevKit/PHP7.1/ssleay32.dll"
 

1

В php.ini необходимо указать статический путь extension_dir. extension_dir = "C:\laragon\bin\php\php-7.3.11-Win32-VC15-x64\ext" например. Не забудьте убрать точку с запятой перед этой переменной.

Я сталкивался с той же проблемой раньше. Я решил ее, добавив каталог php в системные переменные среды Windows --- Путь.

Я получил эту ошибку, потому что, по крайней мере, в моей системе, если extension_dir в php.ini задан относительный путь, он воспринимается как относительный к корневому каталогу Apache, поэтому, чтобы он указывал на правильный каталог мне пришлось использовать абсолютный путь: "C:\Program Files (x86)\PHP\ext" . (Это был PHP 5.5.31 и Apache 2.4.23 в Windows 10; настройка extension_dir to ext прекрасно работал с той же настройкой в ​​Windows 7. Сначала я заставил его работать, поместив каталог ext в папку Apache с необходимыми dll, а затем понял, что происходит.)

Это было также необходимо правильно установить PATH или убедиться, что упомянутые выше dll (libeay32.dll, libssh3.dll и ssleay32.dll) находятся в каталоге bin Apache (или, скорее всего, в любом из мест, упомянутых в других ответах). Тот факт, что я получил то же сообщение об ошибке, что Apache не может найти lib_curl.dll, как и то, что он не может найти libssh3.dll, не облегчает понимание.

Добавьте путь к папке php в System PATH, и все должно работать нормально. Это также исправит некоторые другие расширения, которые не работают.

Возможно, это не лучший подход, но он определенно работает. (2019-2022)

«В вашей установке PHP не включено расширение php_curl.dll».

  1. найдите "php.ini", если нет, вам нужно переименовать "php.ini-development" в "phh.ini". Открой это.

  2. найти ;extension_dir = "ext"

  3. добавьте их под этой строкой, нет ";"

 extension_dir = "[php каталог]\ext"
расширение = php_curl. dll
 

Наиболее правильным и чистым способом является использование директивы FileLoad.

У меня есть несколько наборов Apache-PHP на ПК. Установка PATH для одного каталога PHP создает проблемы в другой версии PHP.

Конечно, я не хочу никуда копировать файлы dll.

Мне нужен был только один файл: libssh3.dll
Я добавил его в приложение директивы IfModule:

 # Модуль PHP7
LoadModule php7_module "../../../PHP/App/v7.3.1/php7apache2_4.dll"

    <Соответствие файлов \.php$>
        Приложение SetHandler/x-httpd-php
    
    PHPIniDir "../../../PHP/App/v7.3.1"
    Загрузить файл "../../../PHP/App/v7.3.1/libssh3.dll"

 

У меня может быть отдельный файл conf с директивами PHP для определенных версий PHP, и я могу выбрать, какие из них включить во время запуска httpd.

LoadFile также предлагается в комментарии @BlitZ под одним из ответов.
И позже в ответе @Leon Lam.

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя адрес электронной почты и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

curl - Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку php_curl.dll невозможно найти

Задавать вопрос

спросил

Изменено
3 месяца назад

Просмотрено
44к раз

У меня Windows 10 с сервером WAMP (Apache 2.4.9, PHP 5.5.29 VC11 x64, e MySQL). Все отлично работает, но теперь я буду использовать расширение curl.

Я захожу в C:\wamp\bin\php\php5.5.29\phpForApache.ini (из конфигурации веб-сервера) и удаляю комментарий из extension=php_curl.dll

перезагружаю сервер apache и в error_log у меня

[22 сентября 2015 г. 13:13:30 UTC] Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку 'c:/wamp/bin/php/php5.5.29/ext/php_curl.dll' -
Невозможный поиск по модулю, специфический.in Неизвестный на линии 0

Библиотека DLL находится в правильной папке, а другие библиотеки DLL работают нормально.

1 ° попробуйте : я добавил в системную переменную PATH: C:/wamp/bin/php/php5.5.29/ext/;c:/wamp/bin/php/php5.5.29/

2 ° попробуйте : я повторно загрузил файл php-5.5.29-Win32-VC11-x64.zip и заменил php_curl.dll

Но у меня всегда один и тот же результат:
index.php

Неустранимая ошибка: Вызов неопределенной функции curl_exec()

phperror_log:

[22 сентября 2015 г. 13:13:30 UTC] Предупреждение PHP: Запуск PHP: невозможно загрузить динамическую библиотеку «c:/wamp/bin/php/php5. 5.29/ext/php_curl.dll» —
Невозможный поиск по модулю, специфический.in Неизвестный на линии 0

  • php
  • завиток
  • dll
  • php-завиток

8

Эти шаги сработали для меня:

  1. Добавьте основную папку php в переменную Path Env в Windows (так что
    libeay32.dll и ssleay32.dll доступны по пути ... некоторые люди
    скопируйте их в Windows/System32, чтобы сделать их доступными по пути, но это
    не очень элегантный способ решить проблему)
  2. Добавьте папку bin Apache в переменную Path Env в Windows

  3. Скопируйте файл libssh3.dll из папки php в корзину apache
    папка (похоже, это нужно Apache для работы php curl в Windows)

7

Запуск PHP: невозможно загрузить динамическую библиотеку curl...
Раскомментирование 2 строк в файле php.ini решает эту проблему

  1. Открыть php.ini
  2. Удалите точку с запятой, чтобы раскомментировать ;extension_dir = "ext"
  3. Удалите точку с запятой, чтобы раскомментировать ;extension=curl
  4. Сохранить php. ini

2

Что у меня сработало:

  1. Я скопировал libssh3.dll, libcrypto-1_1-x64.dll, libssl-1_1-x64.dll, ssleay32.dll, libeay32.dll в папку bin Apache. Наверное, не все из них нужны.

  2. Убедитесь, что в php.ini загружено расширение curl. Это будет extension=php_curl.dll для php < 7 и extension=curl в php 7

  3. Перезапустите службу Apache

1

Убедитесь, что в php.ini , extension_dir = указывает на правильный путь, если он не закомментирован.

Другая возможность — несовместимость между версиями apache и php, по крайней мере, если вы используете wampserver и/или отсутствуют исполняемые файлы VC++. Я использовал php 7.4.11 и apache 2.4.27. Обновление до apache 2.4.46d и установка отсутствующих исполняемых файлов решили проблему. Эта версия apaache также требует обновления wampserver до версии 3.