Меню

Apache php настройка curl



Настройка curl php на Windows

Настройка cURL

Написанное ниже актуально для связки Windows 8.1 x64 , Windows10 x64 + Apache 2.4.12 (win32) + Open SSl 1.0.1m + PHP 5.6.11 (php-5.6.11-Win32-VC11-x86).

  1. Скачиваем библиотеку cURL http://winampplugins.co.uk/curl. Распаковываем в любую папку. Например, «W:\WebServers\usr\local\curl».
  2. В файле настроек PHP php.ini необходимо включить расширение extension=php_curl.dll.
  3. Пункт не обязательный, но во многих источниках его рекомендуют выполнять. У нас работает без выполнения этого пункта. Из папки где установлен PHP скопировать в папку « C:\Windows \system32» следующие библиотеки: libssh2.dll, php_curl.dll (находится в папке ext), ssleay32.dll, libeay32.dll. Дополнительно файл ssleay32.dll необходимо скопировать в «C:\Windows\SysWOW64».
  4. Добавить в переменные среды в переменную Path пути до папки установки curl.exe и файла php.ini. Например, «W:\WebServers\usr\local\curl;W:\WebServers\usr\local\php5». Очень порадовало то, что в windows10 (1511) появился новый интерфейс редактирования переменных сред. Стало очень удобно редактировать параметры.

Включение поддержки SSL для cURL

  1. Скачать файл http://curl.haxx.se/ca/cacert.pem в папку, в которой установлена библиотека curl.exe.
  2. Переименовать скаченный файл в curl-ca-bundle.crt
  3. Перезагрузить компьютер.

Проверка работы cURL

© 2004–2020 Студия Павла Филинкова в Екатеринбурге
Вся информация на сайте носит справочный характер и не является публичной офертой.

Источник

Решение проблемы с работой модуля cURL на PHP 5.6.1, PHP 5.5.17 и выше (на Windows)

1 декабря стартует курс » Тестирование Веб-Приложений на проникновение » от команды codeby . Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, активный фаззинг, уязвимости, пост-эксплуатация, инструментальные средства, Social Engeneering и многое другое. На курс можно записаться до 5 декабря включительно. Подробнее .

Те, кто использует cURL, после обновлений на 5.6.1, 5.5.17 столкнулись с тем, что модуль cURL перестал работать. Проблема с тех пор не исчезла. Даже в последней на сегодняшней момент версии PHP 5.6.4 эта проблема сохранилась.

Как узнать, работает ли у вас cURL?

Создайте php файл и скопируйте туда:

Откройте его с сервера. Если на выходе что-то вроде:

Значит с cURL всё в порядке, если вместо этого ошибка PHP, значит проблема существует.

Во-первых, конечно же проверьте файл php.ini, найдите там строчку

И убедитесь, что перед ней не стоит точка с запятой.

Если всё так, а cURL не работает, то можно провести ещё один тест, для подтверждения необычности ситуации. Создайте ещё один php файл с содержанием:

Через поиск в браузере найдите cURL, если совпадение всего одно, значит модуль cURL не загружен:

При этом и Apache и PHP работают как обычно.

  1. Способ первый (не кошерный). Если у вас PHP 5.6.*, то возьмите версию PHP 5.6.0, оттуда возьмите старый файл php_curl.dll и замените его вместо вашего нового из версии, например, PHP 5.6.4. Для тех, у кого PHP 5.5.17 и выше, нужно взять этот же файл из PHP 5.5.16 и также его заменить. Проблема здесь одна — найти эти старые версии. Можно, конечно, покавыряться в http://windows.php.net/downloads/snaps/php-5.6, но лично я там не нашёл того, что мне нужно. Да и само решение какое-то не совсем кошерное.
  2. Способ второй (очень быстрый, но тоже не кошерный). Из каталога PHP скопировать файл libssh2.dll в каталог Apache24bin и перезапустить Apache.
  3. Способ третий (кошерный — кошерные люди аплодируют стоя). Нужно добавить вашу PHP директорию в PATH. Как это сделать очень хорошо расписано в официальной документации.

Вуаля, секция cURL на месте.

Почему так? Откуда взялась эта проблема? Ответа на этот вопрос нет, хотя уже описан механизм её возникновения.

Проблема связана, вроде, с тем, что 5.6.1 должен был выпущен с обновлённым libcurl 7.38.0. Но это доподлинно не известно, авторы PHP кивают на Apache, мол это там какие-то баги.

Механизм возникновения проблемы: если в системную PATH не включён каталог PHP, то когда служба Apache запускается, она не способна найти новый dll (libssh2.dll), который является зависимостью для php_curl.

Соответствующие баг репорты:

Fatal error: Call to undefined function curl_multi_init() in …

Вообще, проблемы с cURL на PHP были, кажется, если не всегда, то очень часто. В процессе гугления своей проблемы, я натыкался на темы, некоторым из которых было больше чем дюжина лет.

Кроме этого, гугление дало ещё несколько выводов:

В Интернете достаточно «инструкций для дибилов», в которых подробно, с картинками, рассказывают как раскомментировать строку extension=php_curl.dll в файле php.ini.

На официальном сайте PHP, в разделе по установке cURL, есть всего два предложения относительно системы Windows:

Для работы с этим модулем в Windows файлы libeay32.dll и ssleay32.dll должны существовать в системной переменной окружения PATH. Вам не требуется файл libcurl.dll с сайта cURL.

Я прочитал их десяток раз. Переключился на английский язык и прочитал ещё несколько раз на английском. С каждым разом всё больше убеждаясь, что эти два предложения написали животные, или кто-то просто попрыгал попой на клавиатуре — я не понимаю их смысла.

Читайте также:  Sat integral s 1224 hd stealth modern настройка

Ещё есть несколько каких-то сумасшедших советов и инструкций (некоторые я успел даже опробовать).

На сайте баг репортов ПХП я уже вплотную подобрался к разгадке, что нужно в системную переменную PATH включить каталог с PHP.

В общем, для тех, у кого проблема с cURL и кому нужно «в системную переменную PATH включить каталог с PHP», перейдите к уже названной выше инструкции http://php.net/manual/ru/faq.installation.php#faq.installation.addtopath. Там всё просто, а, главное, человеческим языком написано, что нужно сделать.

2 thoughts to “Решение проблемы с работой модуля cURL на PHP 5.6.1, PHP 5.5.17 и выше (на Windows)”

Способ второй (очень быстрый, но тоже не кошерный). Из каталога PHP скопировать файл libssh2.dll в каталог Apache24bin и перезапустить Apache.

Спасибо большое, второй способ очень быстро исправил проблему.

Источник

Как включить cURL в PHP / XAMPP

Как включить cURL в PHP?

Поскольку вы используете XAMPP, раскомментируйте строку

в xampp\apache\bin\php.ini , а затем перезапустите службу Apache.

NB: В новых версиях XAMPP PHP переместился в корневую папку xampp\php\php.ini .

В Debian с Apache 2:

(php4-curl, если это php4)

Шаги для Windows 7:

  1. Убедитесь, что файл php.ini, который использует PHP-движок, является тем, который вы считаете.
  2. Убедитесь, что extension_dir в php.ini правильно установлен в папку ext
  3. Убедитесь, что extension=php_curl.dll в php.ini раскоментировано

Наконец, и, возможно, большинство людей не знают: 4. Убедитесь, что эти два файла находятся в папке Windows System32: libeay32.dll ssleay32.dll Если этого не происходит, вы можете скопировать эти два файла из папки php .

Я нашел файл, расположенный по адресу:

Для Ubuntu (и, вероятно, всех Debian-based) дистрибутивов Linux:

Возможно, вы видели PHP Fatal error: Call to undefined function curl_init() раньше.

Вы компилируете свой PHP, используя —with-curl .

Основной совет: после включения CURL в файле php.ini вам необходимо перезапустить веб-сервер, чтобы он работал (мой опыт говорит).

Поскольку XAMPP прошел некоторые изменения, файл теперь находится в xampp/php/php.ini .

На самом деле я сделал это, раскомментируя extension=php_curl.dll в файле xampp \ apache \ bin \ php.ini.

Если вы используете MAMP , cURL включен по умолчанию.

проверьте, доступен ли модуль curl

включить модуль завивки

установить php5-curl в openuse:

-> программное обеспечение -> управление программным обеспечением -> поиск curl -> проверить php5-curl case и принять.

после установки вам необходимо перезапустить сервер Apache

Вы можете проверить phpinfo() (создать скрипт, содержащий и просмотреть его). Это скажет вам, действительно ли оно включено. Если нет, прочитайте здесь .

Это не рекомендуется для слабонервного разработчика Windows.

Для пользователей ОС Windows (он работал для меня) в XAMPP.

Шаг 1: Перейдите к C: \ xampp \ php \ php.ini

отредактируйте этот файл php.ini

find curl – вы увидите строку: extension = php_curl.dll.

Удалите точку с запятой (;) extension = php_curl.dll. поэтому эта строка выглядит так:

Шаг 2: скопируйте файл ssleay32.dll, libeay32.dll из папки php. вставьте его в папку C: \ Windows \ System32 \

Шаг 3: Перезапустите систему. Curl будет работать успешно.

Источник

Урок 20. Работа с cURL в PHP

В этой статье речь пойдет о таком мощном инструменте как cURL, а также о библиотеке для php, которая предоставляет доступ к этому инструменту — libcurl. Для чего все это нужно? Для связи с сервером по протоколам передачи данных, например, http или ftp. Остальные протоколы нам не особо интересны, если кто-то хочет углубляться в эту тему, то придется уже копать англоязычные ресурсы, а в этой статье будут основы и примеры использования.

Что вообще такое cURL и libcurl? Общие моменты

Итак, библиотека libcurl предоставляет нам возможность передачи данных на сервер, и получения ответов от него. Что нам это дает? Возможность эмуляции поведения пользователя или браузера! Вы можете получать содержимое страниц для последующего парсинга, можете получать заголовки ответов сервиса и программно авторизироваться на сайтах, делать скрипты постинга сообщений (например, в твиттер или на форумах) или грабберы информации. Все ограничивается лишь вашей фантазией!

Установка cURL на Denwer (Денвер). Как начать пользоваться libcurl?

Первое, что мы должны сделать, это установить библиотеку. На локальном компьютере я пользуюсь сборкой Denwer, как и подавляющее большинство начинающих вебмастеров, на которых и рассчитана статья. Опытные пользователи, которые самостоятельно устанавливают связку php+apache+mysql смогут установить и cURL, не мне объяснять им как это делается 😉 А мы, новички, пользуемся готовыми решениями, чтобы было проще. Поэтому, устанавливаем libcurl следующим образом:

  • Скачиваем готовый пакет расширений «PHP5: дополнительные модули».
  • Соответственно, устанавливаем его. Ничего сложного, согласитесь 🙂
  • Открываем в блокноте (я всегда рекомендую Notepad++) файл:

и убираем точку с запятой в начале сроки:

  • Делаем рестарт сервера Денвер.
  • Читайте также:  В фифа 14 есть настройки видеокарты

    Готово. Чтобы проверить работоспособность библиотеки можете вызвать функцию phpinfo() и найти там строчку: cURL support enabled. Поздравляю с первой победой.

    Описание cURL и первые шаги

    Для началом работы с инструментом, его нужно инициализировать. Делается это следующим образом:

    Мы использовали функцию инициализации сессии cURL. При этом, можно задать URL сразу, вот так:

    А можно сделать это потом, в опциях. Порядок установки опций не имеет значения. Делается это другой функцией:

    Первый параметр этой функции, то есть resource ch мы уже создали чуть выше, а вот параметров option и value очень много. Я думаю, что не стоит копипастить сюда их все, а достаточно лишь дать ссылку на подробное описание функции, надеюсь никто не обидится: curl_setopt.

    Приведу пример установки опций как раз на примере URL:

    Еще парочка примеров задания опций: давайте получим заголовок ответа сервера, при этом не будем получать саму страницу:

    Итак, мы инициализировали сессию, задали нужные нам параметры, теперь выполняем получившийся запрос, закрываем сессию и выводим результат:

    В итоге получаем наш первый полностью рабочий пример использования библиотеки libcurl:

    Как оно работает, надеюсь, понятно, ведь мы рассмотрели каждый шаг по отдельности 🙂 В результате мы получаем заголовок HTTP ответа от сервера, который чуть ниже обязательно разберем, чтобы лучше понимать все этапы взаимодействия браузера и сервера:

    Великолепно! Мы получили заголовок ответа от сервера и опробовали библиотеку в действии. Чем это нам полезно? Тем, что теперь вы примерно представляете себе последовательность действий при работе с cURL:

    • Инициализировать сессию (curl_init)
    • Задать нужные нам опции (curl_setopt)
    • Выполнить полученный запрос (curl_exec)
    • Завершить сессию (curl_close)

    Двигаемся дальше, но перед тем как делать с libcurl что-то более серьезное, как я и обещал, разберем подробно из чего состоит заголовок HTTP запроса к серверу и ответ на него.

    Структура заголовка HTTP запроса

    Для примера я обратился к странице ya.ru и в Opera Dragonfly просмотрел сформированный запрос браузера и полученный от сервера ответ. Вот и они:
    Запрос
    GET / HTTP/1.1 — Пытаемся получить страницу по адресу /, то есть главную, находящуюся в корне папки. Используем протокол версии 1.1.
    User-Agent: Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.14 — Представляемся серверу, мы — браузер Опера.
    Host: ya.ru — Доменное имя запрашиваемого ресурса.
    Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 — Список допустимых форматов ресурса.
    Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 — Список поддерживаемых языков.
    Accept-Encoding: gzip, deflate — Поддерживаемые способы кодирования.
    Cookie: yandexuid=ХХХХХ — Куки, при необходимости.
    Connection: Keep-Alive — Просим не разрывать соединение и оставаться на связи.
    Ответ
    HTTP/1.1 200 Ok — Получаем ответ с кодом 200, значит все ОК.
    Server: nginx — Сервер представился — это nginx.
    Date: Sun, 10 Mar 2013 14:10:50 GMT — Текущие дата и время на сервере.
    Content-Type: text/html; charset=UTF-8 — Тип контента и кодировка.
    Connection: close — Сервер не хочет поддерживать с нами постоянного соединения, поэтому сразу же его закрывает. Для следующего запроса будет установлено новое соединение.
    Cache-Control: no-cache,no-store,max-age=0,must-revalidate — Управление кэшированием. В данном случае оно отключено.
    Expires: Sun, 10 Mar 2013 14:10:50 GMT — Дата предполагаемого истечения срока действия сессии. В нашем случае оно совпадает с временем открытия, так как сервер тут же его закрыл, сразу после обработки.
    Last-Modified: Sun, 10 Mar 2013 14:10:50 GMT — Время последней модификации.
    Content-Encoding: gzip — Способ кодирования информации.
    Полный список всех параметров, которые можно встретить в заголовке HTTP запроса можно посмотреть на википедии.
    Теперь вы примерно представляете как общаются между собой ваш браузер и web-сервер. Это очень полезно знать и понимать, ведь мы будем пытаться эмулировать действия браузера с помощью библиотеки libcurl. Идем дальше.

    Читайте также:  Ресивер world vision premium настройка кабельного

    Пример работы с библиотекой

    Я считаю, что после того, как некоторые общие моменты уже ясны и вроде бы все понятно, то самое время переходить к практике и на примере уже оттачивать свое мастерство. Лично у меня всегда сразу руки чешутся все попробовать на практике 🙂

    Раз уж cURL так хорош для парсеров, то рассмотрим функцию получения кода страницы по ее адресу. При этом на выходе получим массив с заголовком, содержимым страницы и даже коды ошибок, если что-то пойдет не так.

    Входные параметры:
    url — адрес страницы или сайта.
    Значения выходных параметров (массив с тремя элементами):
    header[‘errno’] — если что-то пошло не так, то тут будет код ошибки.
    header[‘errmsg’] — здесь при этом будет текст ошибки.
    header[‘content’] — собственно сама страница\файл\картинка и т.д.

    Используем функцию, например, так:

    Все должно пройти без ошибок и вы получите код страницы в переменной $page . Если же попробовать получить несуществующую страницу yaaaaaaaaaaaa.ru , то получим ошибку:

    Все обрабатывается корректно и красиво 🙂
    Дальше с кодом страницы можно делать все что угодно, например, парсить регулярками. Но это все в следующих уроках, а пока что остановимся на этом.

    Комментарии:

    Можете ли вы сообщить сколько еще уроков вы собираетесь сделать и на какие темы они будут?

    Tetsu, буду писать пока будет время 🙂 Есть какие то пожелания?

    Tetsu — 04.05.2013 05:31

    Не совсем… просто хотелось бы освоить это дело побыстрее, поэтому и интересуюсь какие еще темы мне стоит изучить в продолжение этим.

    Alex — 09.08.2013 18:31

    А на MAC OS X нассали? У меня MAMP, что мне делать?

    Kostya — 09.09.2013 04:48

    Автор, спасибо огромное всё сразу стало на свои места в голове:)

    Valek — 11.11.2013 01:08

    Привет
    Забыл ты про функцию iconv у меня бяки отобразились
    Есть парочка тем если интересно.
    1)Чем отличаются echo от print(понимаю что тема затерта в нете но вот подробностей так и не встречал)
    Если хочешь я могу тебе написать массу огромную тем по которой не только мне интересно будет, но и публике тоже интересно будет!
    И еще вот что еще….Спасибо за урок очень хороший но очень сжат,мне кажется что новичку (совсем начинающему)будет трудновато понять что и как делается.

    Михаил — 21.11.2013 17:08

    Большое спасибо. Помог очень))

    Всем остальным, кто не дружит с регулярками, хочу посоветовать PHP Simple HTML DOM Parser.
    http://habrahabr.ru/post/176635/

    Виктория — 15.01.2014 00:11

    У меня, как и у Valek, вылезли кракозябры (с кодировкой проблемы). Valek написал про функцию
    string iconv ( string $in_charset , string $out_charset , string $str )
    но я никак не могу с ней разобраться. Как понять из какой кодировки в какую переделывать (первые два параметра), чтобы получился нормальный русский язык?

    myblaze — 15.01.2014 12:43

    проверьте, точно файл сохранен в кодировке UTF-8? В коде страницы присутствует meta-тег content=»text/html; charset=UTF-8″? И в заключении, после всего этого в самом браузере стоит автоопределение кодировки или жестко задана (может там, например, windows-1251)?

    Михаил — 19.01.2014 14:24

    Виктория, myblaze дело говорит. Ещё раз повторюсь, если позволите.
    1) Чтобы узнать кодировку html документа, нужно посмотреть в сам html документ и обратить внимание на тег
    2) Возможно вы пытаетесь вывести эту строку без учёта её кодировки. Советую сохранить в файл и просмотреть через файл эту строку. Возможно в файле всё откроется без кракозябр.
    3) Советую скачать текстовый редактор Notepad++. Там в меню есть возможность преобразовать и перекодировать. Поэкспериментируйте. Скопируйте и вставте свои кракозябры и попробуйте преобразовать или перекодировать. После каждой неудачной перекодировки нужно заново открывать файл. Это поможет быстрей разобраться с кодировками.

    Jack — 31.01.2014 21:26

    >>Alex — 09.08.2013 18:31
    А на MAC OS X нассали? У меня MAMP, что мне делать?
    —————-
    Для начала научится гуглить, у меня тоже мак c MAMP и проблемы найти мануал по подключению curl не составило труда.

    Jack, кто ищет, тот всегда найдет 😉 А Aleх’у только удачи пожелать можно, может тоже когда-нибудь научится гуглить.

    Сергей — 03.10.2014 11:43

    М — 10.04.2015 12:44

    Денис — 24.01.2017 15:06

    Возникает проблема с Curl, когда сайт находится на сервере http выдается пустой лист, если смотрим смотри ошибки — culdnt connect to host, что делать?

    Dmitriy — 16.09.2019 19:39

    Fatal error: Call to undefined function curl_init()

    Источник

    Adblock
    detector