Php curl https windows

Примеры использования cURL в PHP

GET запрос

POST запрос

file_get_contents() так же умеет отправлять POST запросы:

PUT запрос

DELETE запрос

HTTP-метод DELETE используется в REST API для удаления объектов.

Запрос через proxy

Отправка файлов на другой сервер

Отправка файлов осуществляется методом POST :

С PHP 5.5 такой метод загрузки файлов вызывает ошибку, поэтому следует применять CURLFile.

Также через curl можно отправить сразу несколько файлов:

Ещё файлы можно отправить методом PUT , например так загружаются файлы в REST API Яндекс Диска.

Скачивание файлов

Curl позволяет сохранить результат сразу в файл, указав указатель на открытый файл в параметре CURLOPT_FILE .

Чтобы CURL сохранял куки в файле достаточно прописать его путь в параметрах CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR .

Передать значение кук можно принудительно через параметр CURLOPT_COOKIE .

Имитация браузера

На многих сайтах есть защита от парсинга. Она основана на том что браузер передает серверу user agent , referer , cookie . Сервер проверяет эти данные и возвращает нормальную страницу. При подключение через curl эти данные не передаются и сервер отдает ошибку 404 или 500. Чтобы имитировать браузер нужно добавить заголовки:

HTTP авторизация

Basic Authorization

Если на сервере настроена HTTP авторизация, например с помощью .htpasswd, подключится к нему можно с помощью параметра CURLOPT_USERPWD .

Установка PHP+Curl на Windows

Новичок

Установка PHP+Curl на Windows

Подскажите, как установить PHP+Curl на Windows. Я скачал все что нужно, установил curl в папку apache\php\curl\
Проверил из командной строки, библиотек работает. Но как ее связать с PHP не знаю. В Интернете у всех одна и таже фраза:
compile PHP —with-curl[=DIR]
Но как же быть с Виндой. Как параметры прописать?

young

Новичок

TeaM PHPClub

у меня юзать эту dll-ку под виндой так и не получилось.
я в итоге из командой строки curl вызываю.
т.е.

@exec(«c:\path\to\curl\curl.exe -d \»$data\» https://sslserver.com», $return_string);

tony2001

TeaM PHPClub
Новичок

Все получилось, спасибо. Привожу пример настройки, если кому интересно:

1. установил curl в папку apache\php\curl\

2. туда же кинул OpenSSL 0.9.6a (которая также включает в себя два файла: libeay32.dll и libssl32.dll). Впрочем строго говоря для работы curl необходимы только libeay32.dll и ssleay32.dll. Эти два файла должны быть в папке apache.

Читайте также:  Opera для windows embedded

3. убрал ; в файле php.ini в строке:
;extension=php_curl.dll

4. проверить можно, написав в файле строку:
curl_version();

Hummerstadt

Новичок

Автор оригинала: Кром
Все получилось, спасибо. Привожу пример настройки, если кому интересно:

1. установил curl в папку apache\php\curl\

2. туда же кинул OpenSSL 0.9.6a (которая также включает в себя два файла: libeay32.dll и libssl32.dll). Впрочем строго говоря для работы curl необходимы только libeay32.dll и ssleay32.dll. Эти два файла должны быть в папке apache.

3. убрал ; в файле php.ini в строке:
;extension=php_curl.dll

4. проверить можно, написав в файле строку:
curl_version();

С curl даже «старичок» парился, не то что я там.
Нет файла OpenSSL 0.9.ba в архиве. Скачал curl-7.14.0-win32-ssl-sspi.zip и curl-7.14.0.zip.
По-прежнему не могу поставить.

Все, хакнул этот сайт http://curl.haxx.se/docs/faq.html , нашел вот это

и счастливо качаю

Настройка 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 Студия Павла Филинкова в Екатеринбурге
Вся информация на сайте носит справочный характер и не является публичной офертой.

[решено] php curl https запрос как правильно

Собственно параметры CURL для работы с SSL:
CURLOPT_SSL_VERIFYPEER — если поставить его в 0, то удалённый сервер не будет проверять наш сертификат. В противном случае необходимо этот самый сертификат послать.
CURLOPT_CAINFO — указывать файл сертификата, если CURLOPT_SSL_VERIFYPEER установлен в 1.
CURLOPT_SSLVERSION — целое число, указывает версию SSL (2 или 3), обычно определяется автоматически.
CURLOPT_SSL_VERIFYHOST — будет ли производиться проверка имени удалённого сервера, указанного в сертификате. Если установить значение «2», то будет произведена ещё и проверка соответствия имени хоста. (если честно, я так и не понял что делает этот флаг)

Читайте также:  Windows file extensions change

И самый простой способ CURLOPT_SSL_VERIFYPEER поставить в 0
ПРИМЕР:
$postfields = array(‘field1’=>’value1’, ‘field2’=>’value2’);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ‘https://foo.com’);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, 1);
// Edit: prior variable $postFields should be $postfields;
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // On dev server only!
$result = curl_exec($ch);

Значение остальных параметров:
CURLOPT_URL — это URL запроса.
CURLOPT_POST — говорим, что будем посылать POST запрос.
CURLOPT_POSTFIELDS — собственно POST переменыые.
CURLOPT_RETURNTRANSFER — вернуть результат запроса, а не выводить в браузер.

А вот что написано в хелпе: http://php.net/manual/en/function.curl-setopt.php#110457
Please everyone, stop setting CURLOPT_SSL_VERIFYPEER to false or 0. If your PHP installation doesn’t have an up-to-date CA root certificate bundle, download the one at the curl website and save it on your server:

Then set a path to it in your php.ini file, e.g. on Windows:

Turning off CURLOPT_SSL_VERIFYPEER allows man in the middle (MITM) attacks, which you don’t want!

Что означет не использовать, тот метод что я описал выше CURLOPT_SSL_VERIFYPEER, а обновить CA root certificate bundle и прописать путь к сертификату: curl.cainfo

Если вы хотите посмотреть как выглядит HTTP \ HTTPS запрос который вы отправляете в браузере, то поставьте в chrome расширение Advanced REST client

Еще небольшой пример как работать curl впринципи в php:
/**
* Get a web file (HTML, XHTML, XML, image, etc.) from a URL. Return an
* array containing the HTTP server response header fields and content.
*/
function get_web_page( $url )
<
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don’t return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => «», // handle all encodings
CURLOPT_USERAGENT => «spider», // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);

$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );

$header[‘errno’] = $err;
$header[‘errmsg’] = $errmsg;
$header[‘content’] = $content;
return $header;
>
This sample function takes a URL argument and returns an associative array containing the server header and content. The CURL functions automatically handle DNS lookups, redirects, cookies, and file decompression.

Header values are described in the curl_getinfo() manual. Highlights include:

«url» the final page URL after redirects
«content_type» the content type (e.g. «text/html; charset=utf-8»)
«http_code» the page status code (e.g. «200» on success)
«filetime» the date stamp on the remote file
This function adds::

Читайте также:  Kali linux пакеты имеют неудовлетворенные зависимости

«errno» the CURL error number (0 on success)
«errmsg» the CURL error message for the error number
«content» the page content (e.g. HTML text, image bytes, etc.)
On success, «errno» is 0, «http_code» is 200, and «content» contains the web page.

On an error with a bad URL, unknown host, timeout, or redirect loop, «errno» has a non-zero error code and «errmsg» has an error message (see the CURL error code list).

On an error with a missing web page or insufficient permissions, «errno» is 0, «http_code» has a non-200 HTTP status code, and «content» contains the site’s error message page (see the Wikipedia List of HTTP status codes).

This function can be extended to support GET and POST for web forms, file uploads, logins, SSL for encrypted web pages, and access through proxy servers.

How To Use Curl with HTTPS Protocol and URLS?

Curl is a command line tool and library which implements protocols like HTTP, HTTPS, FTP etc. Curl also supports HTTPS protocol which is secure version of the HTTP. Using curl may create some problems. We will examine how to solve these curl HTTPS related problems.

Install Curl

We will start with the installation of the curl tool with the following command.

Ubuntu, Debian, Mint, Kali:

Fedora, CentOS, RHEL:

SSL/TLS Problems

Especial in self-signed or expired X.509 or SSL/TLS certificates may create problems. The error detail is printed to the terminal. As an example, we will try to access https://www.wikipedia.com and we will get an error like

AND we run following command.

curl SSL/TLS Problems

Allow Insecure Connections

In order to prevent this error and accept an insecure certificate, we need to provide —insecure This will accept all provided certificates without complaining about it.

Allow Insecure Connections

Provide Site HTTPS Certificate Manually

If we do not want to use web site provided certificate and provide sites HTTPS certificate manually we can use -E or —cert option with the certificate file. In this example, we will use a certificate named in wk.cert order to connect https://www.wikipedia.com.

Provide a Certificate Authority Certificate Explicitly

In some cases, we may need to use another certificate chain then internet. Certificate chains provide a trust relationship between hierarchical certificates where the leaf is the site certificate we want to navigate. Certificate Authority is the top certificate which is provided by Certification Authority firms. We can provide another certificate authority like our company local certificate authority with the —cacert option.

Оцените статью