2015-09-10 2 views
3

Я использую PHP 5.5.25 с Apache 2.4 по адресу Windows 7 x64, и я не могу активировать модуль cURL. Я огляделся и попробовал все, что мог придумать. Пожалуйста помогите:Почему PHP отказывается включить cURL в Windows

  • В php.ini, линия extension=php_curl.dll активна, и файл php_curl.dll присутствует в каталоге расширений C:\php\ext
  • В php.ini когда я установил extension_dir = ext, ни один из нагрузки расширений. Я получаю несколько сообщений при запуске Apache, аналогично Unable to load dynamic library ext \ php_openssl.dll - The specified module could not be found.
  • Когда я использую полный путь и устанавливаю extension_dir = C:\php\ext, все расширения загружаются штрафом, кроме cURL. Я получаю ошибку: Unable to load dynamic library C: \ PHP \ вн \ php_curl.dll - The specified module could not be found.
  • Я попытался переименовать расширение на php_curl.new.dll и корректировки php.ini, но я получаю сообщение об ошибке о новом имени файла. Я также загрузил новую новую копию DLL от windows.php.net, но это не имело никакого значения.
  • Я проверил права доступа к файлам для php_curl.dll (Щелкните правой кнопкой мыши на файле >> вкладке Свойства >> Безопасность), и они такие же, как разрешения для расширений, которые загружаются успешно
  • Я скопировал и вставил libeay32.dll и ssleay32.dll из каталога PHP бен в каталогах System32 и SysWOW64, как указывается в ответ на this question
  • Я уверен, что я редактирую право php.ini с момента сообщения об ошибках PHP запуска изменилось, когда я изменил значение extension_dir от ext до C:\php\ext, как я объяснено выше.
  • Я решил перезапустить сервер Apache между изменениями конфигурации php.ini.
  • Если в скрипте PHP я выполняю var_dump(file_exists('C:\php\ext\php_curl.dll'));, я получаю boolean True, поэтому PHP может видеть файл!

Что еще может объяснить, почему модуль cURL не включен?

ответ

6

Я думаю, что вам понадобится libssh2.dll в вашем PATH тоже.

+1

Это сработало! Копирование случайных DLL с 'C: \ php' на' C: \ Windows \ SysWOW64' может вызвать проблему позже, потому что, когда я изменяю версии PHP, я не буду переписывать эти копии с DLL новой версии. Я думаю вместо добавления 'C: \ php' в переменную Windows PATH. Таким образом, все файлы DLL в PHP могут оставаться вместе и быть более легкими в обслуживании. Вы видите какой-то большой недостаток? – BeetleJuice

+0

Нет, это разумная вещь. Хотя вы имеете в виду 'C: \ php \ ext', верно? Прошло много времени с тех пор, как я запустил PHP в Windows ... –

+0

Расширения находятся в 'C: \ php \ ext', bu DLL, которые Windows не может видеть, находятся в' C: \ php' – BeetleJuice

0

на окнах выполнение cURL требует сертификата SSL. может быть из-за этого появляется другая ошибка.

Введите код ниже curl_exec (curlHandle).

//to ignore the SSL certificate in windows 
     curl_setopt($curlHandle, CURLOPT_SSL_VERIFYPEER,false); 
+0

Модуль cURL не загружался вообще, поэтому функция cURL не была доступна для моего скрипта. Моя проблема заключалась в том, что ОС требовалась, но не могла найти 'libssh2.dll'. – BeetleJuice

3

Кредит для @Steven Hilder для указания меня в правильном направлении.

Проблема была в том, что Windows не видна libssh2.dll, другая DLL, которая была в каталоге PHP. Копирование этого файла в C:\Windows\SysWOW64 и C:\Windows\System32, вместе с двумя другими DLL-файлами моего OP (libeay32.dll и ssleay32.dll).

Мне неудобно это решение, потому что, когда придет время обновиться до новой версии PHP, мне будет труднее вспоминать, чтобы перезаписать эти библиотеки с новой версией. Таким образом, я решил удалить все 3 библиотеки из System32 и SysWOW64. Вместо этого я просто добавил каталог bin для Windows в переменную PATH Windows, так что в следующий раз, когда ОС ищет недостающий файл, он также будет искать в этом каталоге. У этого есть дополнительный бонус, если возникнет аналогичная проблема с другой DLL, он будет разрешен автоматически.

Чтобы добавить PHP бен в PATH Windows':

  1. Из Start Menu панели поиска, поиска и выбора Advanced system settings
  2. Нажмите Environment Variables. Прокрутите список системных переменных для выбора Path и нажмите Edit..., чтобы открыть текущую настройку
  3. Append ;C:\php PATH или любой другой каталог имеет php.exe к текущей настройке (точка с запятой используются для разделения путей).

 Смежные вопросы

  • Нет связанных вопросов^_^