Интернет. Безопасность. Windows. Программы. Компьютеры

Curl установка windows. Установка cURL на Denwer

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

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

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

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

Array ( => 468736 => 3 => 3997 => 0 => 7.39.0 => x86_64-pc-win32 => OpenSSL/1.0.1j => 1.2.7.3 => Array ( => dict => file => ftp => ftps => gopher => http => https => imap => imaps => ldap => pop3 => pop3s => rtsp => scp => sftp => smtp => smtps => telnet => tftp))

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

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

Extension=php_curl.dll

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

Если всё так, а 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.

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

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

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

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

16.02.2006 Джеф Феллинг

Curl поможет управлять данными, размещенными в Web В данной статье рассматривается бесплатный инструмент Curl, с помощью которого можно передавать и принимать Web-страницы из командной строки. Благодаря Curl легко автоматизировать многие

Curl поможет управлять данными, размещенными в Web

В данной статье рассматривается бесплатный инструмент Curl, с помощью которого можно передавать и принимать Web-страницы из командной строки. Благодаря Curl легко автоматизировать многие операции информационной защиты и администрирования, например извлечь Web-страницу для анализа или загрузить исправление для системы безопасности из Web.

Установка Curl

Curl входит в состав многих дистрибутивов Unix. Имеются двоичные файлы и исходные тексты для большинства других операционных систем. Даже программисты, работающие с открытым PHP, могут использовать Curl для безопасного доступа к Web-контенту непосредственно из PHP-сценариев.

Для работы Curl с Web-узлами Secure Sockets Layer (SSL) необходим пакет OpenSSL. Существуют две версии Curl: одна с SSL, другая без SSL. Рекомендую первую, поскольку SSL надежно защищает данные.

Прежде чем использовать Curl с функциями SSL, необходимо загрузить из сети и отдельно установить пакет OpenSSL. Двоичные файлы OpenSSL for Windows можно загрузить с сайта проекта GnuWin32 SourceForge по адресу . На этом сайте имеется и много других полезных инструментов, портированных в Windows.

Следует загрузить и установить пакет OpenSSL, затем скопировать два DLL-файла в каталог system32:

Copy "C:Program FilesGnuWin32 binlibeay32.dll" %windir%system32 copy "C:Program FilesGnuWin32 binlibssl32.dll" %windir%system32

После этого можно установить Curl. SSL-совместимые двоичные файлы Curl для Windows можно найти по адресу http://curl.haxx.se/latest.cgi?curl=win32-ssl-sspi . Новейшая версия, curl 7.15.0, находится в win32-ssl-sspi.zip, который содержит файл curl.exe и документацию.

После установки Curl следует убедиться в его работоспособности, введя команду

Curl http://isc.sans.org/ infocon.txt

Если на экране появится слово, обозначающее цвет (например, green), значит, Curl работает. В этом простом примере Curl извлекает содержание Infocon из Web-узла Internet Storm Center института SANS. Green означает, что Internet функционирует нормально и серьезных угроз не обнаружено. Если же вместо green на экране появляются слова yellow, orange или red, то отложите эту статью и посетите сайт http://isc.sans.org , чтобы узнать о состояниях повышенной опасности в Internet. В случае ошибки необходимо проверить правильность установки Curl.

В сущности, Curl извлекает Web-страницу, а затем выдает исходный текст HTML страницы на консоль. Однако возможности утилиты шире. Curl располагает встроенной функцией проверки ошибок. Например, команда

Curl http://noserverhere

выдает ошибку Curl: (6) Could not resolve host: noserverhere; Host not found. Коды ошибок можно использовать в сценариях, чтобы проверить доступность Web-страницы или реакцию Web-сервера. Например, если использовать Curl для ежедневного извлечения Web-страницы, в частности суточной статистики Web-узла, можно дополнить сценарий исходным текстом, отыскивающим коды ошибок. Если Curl выдает код ошибки Curl: (7) couldn?t connect to host, то можно немедленно передать предупреждение или отправить сообщение по электронной почте.

Извлечение шифрованных данных

Одно из важнейших достоинств Curl - совместимость с SSL. Запрошенные страницы HTTPS передаются через сеть в зашифрованном виде, а затем Curl выводит на экран восстановленный текст. Кроме того, Curl проверяет сертификаты - дату завершения действия сертификата, соответствие имени хост-компьютера хост-имени в сертификате и уровень доверия к корневому сертификату - и предупреждает, если сертификат некорректен. Параметр -cacert позволяет указать определенный файл сертификата. Проверка сертификатов отменяется с помощью параметра -k. Альтернативный подход - использовать параметр -insecure.

Не только для WWW

Возможности Curl шире простой пересылки файлов через Internet. С помощью Curl можно быстро получить список каталогов FTP-сайта:

Curl ftp://myftpsite

Чтобы увидеть подкаталоги сайта, следует ввести команду

Curl ftp://myftpsite/subdir/

Для загрузки файла из сети достаточно указать в URL имя файла. В следующем примере файл с именем readme.txt загружается прямо из командной строки и отображается на экране:

Curl ftp://ftp.microsoft.com/ deskapps/games/readme.txt

Нередко проще подготовить сценарий с Curl для ввода FTP-файлов, чем использовать команду FTP интерактивно.

По умолчанию данные выводятся непосредственно на консоль, но их можно перенаправить в файл с помощью параметров -o и -O. Чтобы получить страницу и сохранить ее на диске, следует указать параметр -o. Параметр -O сохраняет полученную страницу в локальном файле, и Curl извлекает имя удаленного документа. Если в URL имя файла не указано, то эта операция закончится неудачей. Если использовать Curl для передачи на Web-узел запроса без имени файла, но нужно сохранить результат в файле, можно указать имя файла в командной строке, например:

Аутентификация

Curl обеспечивает методы аутентификации Basic, Digest и интегрированный. На большинстве сайтов доступ к страницам с аутентификацией на базе форм можно получить с использованием функций отправки Curl, что будет продемонстрировано чуть ниже. Это значит, что можно передать данные формы, в частности имя пользователя и пароль, на удаленный Web-узел, на Web-странице которого выводится запрос на ввод информации. Для пересылки учетных данных можно использовать параметр -u или вставить их в URL, что традиционно делается в FTP, например:

Curl ftp://username: password@myhtmlsite

С помощью Curl приемы, заимствованные из FTP, можно перенести в HTTP, как в следующем примере:

Curl http://username:password @myhtmlsite/default.htm

Curl также обеспечивает доступ к Web-страницам через proxy-сервер. Поэтому Curl можно настроить на использование proxy-сервера для аутентификации в режимах Basic, Digest и NTLM.

Читайте документацию

В одной статье трудно охватить все многочисленные функции Curl, среди которых и загрузка файлов на сервер (-T), и просмотр только информации в заголовке HTTP (-I), и просмотр всех данных в детальном режиме (-V), и скрытый вывод (-s). Я рекомендую более подробно ознакомиться с функциями Curl в руководстве, опубликованном по адресу http://curl.haxx.se/docs .

Пример использования Curl

Ознакомившись с основами Curl, рассмотрим простой пример извлечения данных из Web-узла при заданных входных данных. Построим простой инструмент Whois, который демонстрирует простоту и удобство применения Curl и процедуру отправки данных на Web-узел с использованием параметра -d. В данном примере Curl посылает IP-адрес на Web-узел Arin Whois, а затем извлекает результаты из этого сайта. Whois отыскивает информацию о владельце IP-адреса.

Перед началом работы важно исследовать Web-узел, так как в исходном тексте каждого сайта есть свои особенности, и Curl не всегда одинаково работает с любыми сайтами. Предварительное посещение сайта позволяет собрать необходимую информацию для работы Curl. В данном примере я воспользовался браузером, чтобы посетить Web-узел http://www.arin.net/whois/ , и обратил внимание, что на сайте имеется единственное поле ввода данных, в котором посетители указывают интересующий их IP-адрес. Необходимо получить детали этого поля, которое представляет собой часть Web-формы. В данном примере используется Perl-сценарий formfind.pl (http://cool.haxx.se/cvs.cgi/curl/perl/contrib/ formfind?rev=HEAD&content-type=text/vnd.viewcvs-markup ). Сценарий Formfind.pl преобразует данные формы в удобные выходные результаты и упрощает ручной поиск данных в HTML. Конечно, для запуска Formfind на компьютере должен быть развернут Perl. Хороший пакет Win32 Perl можно заказать на сайте ActiveState ActivePerl по адресу http://www.activestate.com .

Рассмотрим пример более подробно. Во-первых, обратимся к Web-узлу, содержащему форму, которая запрашивает информацию:

Curl -o whoisOutputFile http://www.arin.net/whois/

Эта команда извлекает страницу Whois из http://www.arin.net и сохраняет ее в текстовом файле whoisOutputFile, который содержит исходный текст HTML, воспроизводимый браузером при посещении сайта.

Затем необходимо найти и выделить данные формы:

./formfind.pl

Formfind выдает переменные формы и их возможные величины. В данном примере выходные результаты имеют довольно простой вид (см. экран 1 ).

Следует обратить внимание на данные формы Input с именем queryinput. Это текстовое поле, в которое Curl должен послать искомый IP-адрес. Конкретный IP-адрес не имеет значения - в данном примере использовался адрес Microsoft. С помощью параметра -d искомый IP-адрес пересылается в поле queryinput:

Curl -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/ whois.pl

Команда Curl с параметром -d отыскивает данные в форме, в данном случае queryinput, которые представляют собой искомый IP-адрес. При этом меняется целевой адрес; форма должна передавать данные на новый URL, который представляет сценарий whois.pl. Новый целевой адрес можно увидеть на выходе formfind на экране 1.

В данном примере также получен исходный текст HTML ответа Whois, но он скрыт группой тэгов HTML. По умолчанию сообщение о статусе Curl показывает размер документа, процент выполнения и скорость пересылки. Выходные данные можно немного расчистить и отфильтровать имя организации, которой принадлежит IP-адрес. Статус Curl можно блокировать с помощью параметра -s. Команду следует выполнять через grep, чтобы получить только OrgName:

Curl -s -d "queryinput= 207.46.133.140" http://ws.arin.net/cgibin/ whois.pl | grep OrgName

В данном примере выходные результаты показывают, что OrgName - Microsoft Corp.

@echo off curl -k -s -d "queryinput= %1" http://ws.arin.net/cgibin/ whois.pl | grep OrgName



Такая небольшая программка как curl умеет очень многое и вряд ли она установлена по-умолчанию на вашем VPS -сервере. Если Вы web-разработчик и не знаете, что такое curl, то стоит ознакомиться с ее возможностями и, возможно, некоторые вещи, которые раньше делались сложно, впредь будут реализованы проще и эффективнее.

Те разработчики, кто разрабатывал когда-нибудь HTML - или XML - парсеры, знают о ее возможностях.

Для себя я открыл curl только в тот момент, когда предстояло разработать плагин для Textpattern, который бы вопреки политики социальной сети “Вконтакте”, автоматически добавлял уведомление о публикации новой статьи в публичную группу. Увы, без curl у меня этого сделать так и не получилось.

После того как мы, я надеюсь, определились зачем этот самый curl нам нужен, приступаем к его установке на сервер, где стоит PHP и Apache. Если у Вас простой хостинг (не VPS ), то стоит обратиться к хостеру с просьбой его включить и он все сделает за Вас, если уже этого не сделал. У меня на одном хостинге именно так и было.

Как узнать установлен ли у меня curl?

Перед тем, как ринуться к установке, давайте проверим: возможно, он уже у Вас установлен. Я не нашел ничего проще, чем создать файл, к примеру, curl.php с содержимым:


и запустить его через браузер.

В выведенной простыне текста, можно поиском по странице поискать curl и если он у Вас не найдется, то смело полагать, что у Вас он не установлен.

Устанавливаем curl в Debian

Еще с давних времен, когда я использовал Ubuntu, я привык к DEB -дистрибутивам и менять их не хочу. Именно поэтому практически на всех своих серверах я использую в качестве операционной системы – Debian, о чем еще ниразу не пожалел.

  1. Устанавливаем все, что нужно:
    sudo apt-get install curl libcurl3 libcurl3-dev php5-curl php5-mcrypt
  2. После этого нужно всего-лишь перезапустить Apache:
    sudo /etc/init.d/apache2 restart

Для подтверждения того, что curl начал свою работу нужно снова запустить наш тестовый файл – curl.php и в последний раз пройтись поиском по открытой странице. В 99% случаях Вы увидите подтверждение того, что curl уже работает и можно приступать к порабощению интернета.

P.S. Сейчас как раз такое время, когда на улице уже холодно, а отопление администрация нашего города включать пока не спешит. В такие моменты найти спасение можно только в различных обогревателях. Побочным эффектов любого обогревателей является то, что он сильно сушит окружающий воздух. Бороться с этим помогают увлажнители воздуха для дома . Именно эти два устройства вместе помогут пережить это тяжелое для России время.

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

Прежде чем переходить к установке cURL на Denwer , давайте кратко расскажу о возможностях, которые предоставляет данный модуль. cURL - это удобный способ для моделирования действий пользователя на сервере. Фактически, Вы можете проверять ответ сервера при том или ином запросе. Например, можете отправлять POST-запросы и смотреть, что отдаёт сервер. Например, хотите проверить работу системы авторизации. Разумеется, можно и вручную через браузер вводить логин и пароль и смотреть, что происходит. Но гораздо удобнее будет написать небольшую серию тестов, в которых происходит отправка различных примеров логина и пароля, и при этом выводится ответ от сервера: успешная авторизация или нет. А Вы уже смотрете: правильно работает скрипт авторизации или нет. Вот для подобных целей и используется модуль cURL .

А теперь давайте займёмся установкой модуля cURL на Denwer :

  • Скачайте пакет расширений: "PHP5: дополнительные модули " по этой ссылке: http://www.denwer.ru/packages/php5.html .
  • Устанавливаете скачанный пакет (предварительно остановите сервер, если он запущен).
  • В файле "usr/local/php5/php.ini " уберите комментарий из строчки: ";extension=php_curl.dll ", стерев кавычки в начале строки.
  • Запустите сервер.
  • Проверьте данные в phpinfo() . Если увидите "cURL support enabled ", значит, всё хорошо. Если нет, то внимательно проверьте: все ли шаги Вы выполнили правильно.

Думаю, что в следующей статье (а, может быть, через одну), мы с Вами будем разбирать этот модуль уже на примере использования его в PHP-скриптах , так что не переключайтесь!

Краткая инструкция для тех, кто хочет настроить curl php на Windows 8.1 x64. Если curl не настроен на вашем вэб-сервере, то возникает следующая ошибка: Fatal error: Call to undefined function curl_init().

Настройка 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. Перезагрузить компьютер.
Загрузка...