Curl
PHP поддерживает libcurl, библиотеку, созданную Daniel"ом
Stenberg"ом,
которая даёт возможность соединяться с серверамиразличных типов и по разным протоколам.
libcurl в настоящее
время поддерживает протоколы http, https, ftp, gopher, telnet, dict,
file и ldap.
libcurl также поддерживает сертификаты HTTPS, HTTP POST, HTTP PUT,
загрузку по FTP (это можно сделать также РНР-расширением ftp),
загрузку на основе форм HTTP, прокси, куки и аутентификацию
user+password.
Эти функции были введены в PHP 4.0.2.
curl_init
curl_init - инициализирует CURL-сессию.
Описаниеresource curl_init([string url])
Функция curl_init() инициализирует новую сессию и возвратит
CURL-дескриптор для
использования в функциях curl_setopt(),
curl_exec()
и curl_close().
Если необязательный параметр url предоставлен, то опция
CURLOPT_URL получит значение этого параметра. Вы можете вручную
устанавливать его с помощью функции
curl_setopt().
curl_setopt
curl_setopt - устанавливает опции для CURL-трансфера/transfer.
Описаниеbool curl_setopt (resource ch, string option,
mixed value)
Функция curl_setopt() устанавливает опции для CURL-сессии,
идентифицируемой параметром ch.
Параметр option является опцией, которую вы хотите
установить, а value это значение опции
option.
Параметр value должен быть long для следующих опций
(специфицированных параметром option):
- CURLOPT_INFILESIZE: Если вы выгружаете файл на
удалённый сайт, эта опция должна использоваться,
для того чтобы сообщит PHP, какой будет ожидаемый размер infile.
- CURLOPT_VERBOSE: Установите эту опцию в ненулевое
значение, если вы хотите, чтобы CURL
сообщала обо всех действиях.
- CURLOPT_HEADER: Установите эту опцию в ненулевое
значение, если вы хотите, чтобы шапка/header
включалась в вывод.
- CURLOPT_NOPROGRESS: Установите эту опцию в
ненулевое значение, если вы не хотите, чтобы PHP
выводил индикатор процесса CURL-трансфера.
(PHP автоматически устанавливает эту опцию в ненулевое значение,
изменять её необходимо лишь при отладке.)
- CURLOPT_NOBODY: Установите эту опцию в ненулевое
значение, если вы не хотите, чтобы тело/body
включалось в вывод.
- CURLOPT_FAILONERROR: Установите эту опцию в
ненулевое значение, если вы хотите, чтобы PHP завершал
работу скрыто, если возвращаемый HTTP-код имеет значение выше 300. По
умолчанию страница возвращается нормально с игнорированием кода.
- CURLOPT_UPLOAD: Установите эту опцию в ненулевое
значение, если вы хотите, чтобы PHP
подготавливал файл к выгрузке.
- CURLOPT_POST: Установите эту опцию в ненулевое
значение, если вы хотите, чтобы PHP выполнял
регулярный HTTP POST. Этот POST имеет нормальный вид application/x-www-form-urlencoded,
чаще всего используемый HTML-формами.
- CURLOPT_FTPLISTONLY: Установите эту опцию в
ненулевое значение, и PHP будет выводит листинг имён FTP-директории.
- CURLOPT_FTPAPPEND: Установите эту опцию в ненулевое
значение, и PHP будет присоединять к
удалённому/remote файлу, вместо его перезаписи.
- CURLOPT_NETRC: Установите эту опцию в ненулевое
значение, и PHP будет сканировать ваш файл
~./netrc с целью поиска ваших username и password для
удалённого сайта, с которым вы
устанавливаете соединение.
- CURLOPT_FOLLOWLOCATION: Установите эту опцию в
ненулевое значение, чтобы следовать любому "Location: " header,
который сервер высылает как часть HTTP header"а (заметьте,
что это рекурсия, PHP будет следовать за всеми "Location: "-header"ами,
которые высылаются.)
- CURLOPT_PUT: Установите эту опцию в ненулевое
значение, чтобы HTTP PUT файл. Файл для PUT
обязан быть установлен с помощью CURLOPT_INFILE и CURLOPT_INFILESIZE.
- CURLOPT_MUTE: Установите эту опцию в ненулевое
значение, и PHP будет работать скрыто в
отношении CURL-функций.
- CURLOPT_TIMEOUT: Передаёт long как параметр,
который содержит максимальное время в секундах,
которое вы отводите для работы CURL-функций.
- CURLOPT_LOW_SPEED_LIMIT: Передаёт long как
параметр, который содержит скорость трансфера в байтах в
секунду, ниже которого трансфер должен работать в процессе выполнения
CURLOPT_LOW_SPEED_TIME, в секундах, чтобы PHP считал его слишком
медленным и прерывал его.
- CURLOPT_LOW_SPEED_TIME: Передаёт long как параметр,
который содержит время в секундах, ниже которого
трансфер должен работать в процессе выполнения CURLOPT_LOW_SPEED_LIMIT,
чтобы PHP считал его слишком медленным и прерывал его.
- CURLOPT_RESUME_FROM: Передаёт long как параметр,
который содержит смещение в байтах, с которого
трансфер должен стартовать.
- CURLOPT_SSLVERSION: Передаёт long как параметр,
который содержит используемую версию SSL (2 или 3).
По умолчанию PHP пытается определить это сам, хотя в некоторых случаях
вы обязаны устанавливать это вручную.
- CURLOPT_SSL_VERIFYHOST: Передаёт long, если
CURL должна проверять Common-имя peer-сертификата в SSL
handshake/"рукопожатие". Значение 1 указывает, что мы должны
проверить существование общего /common имени, значение 2 указывает, что
мы
должны убедиться в совпадении с предоставленным hostname.
- CURLOPT_TIMECONDITION: Передаёт long как параметр,
который определяет, как рассматривается CURLOPT_TIMEVALUE.
Вы можете установить этот параметр для TIMECOND_IFMODSINCE или
TIMECOND_ISUNMODSINCE. Это действует только для HTTP.
- CURLOPT_TIMEVALUE: Передаёт long как параметр,
который является временем в секундах, прошедшим
после 1 января 1970. Это время используется, как специфицировано опцией
CURLOPT_TIMEVALUE,
или по умолчанию будет использоваться TIMECOND_IFMODSINCE.
- CURLOPT_RETURNTRANSFER: Передаёт ненулевое
значение, если вы хотите, чтобы CURL непосредственно
возвращала трансфер, вместо его печати напрямую.
Параметр value должен быть строкой для следующих
значений параметра option:
- CURLOPT_URL: Это URL, который PHP должен
получать. Вы можете также устанавливать эту
опцию при инициализации сессии функцией curl_init().
- CURLOPT_USERPWD: Передаёт в РНР строку,
отформатированную в виде [username]:[password], для
использования при соединении.
- CURLOPT_PROXYUSERPWD: Передаёт в РНР строку,
отформатированную в виде [username]:[password], для
соединения с HTTP-прокси.
- CURLOPT_RANGE:
Передаёт специфицированный вами диапазон. Он должен быть в формате
"X-Y", где X или Y могут отсутствовать. HTTP-трансферы поддерживают
также различные интервалы, разделённые запятыми, как, например, X-Y,N-M.
- CURLOPT_POSTFIELDS: Передаёт строку,
содержащую полные данные для передачи операцией HTTP "POST".
- CURLOPT_REFERER: Передаёт строку, содержащую
"referer/ссылающийся" header, используемый в HTTP-запросе.
- CURLOPT_USERAGENT: Передаёт строку, содержащую
"user-agent" header, используемый в HTTP-запросе.
- CURLOPT_FTPPORT: Передаёт строку, содержащую
значение, которое будет использоваться для
получения IP-адреса для инструкции ftp "POST". POST-инструкция
указывает
удалённому серверу: соединиться со специфицированным IP-адресом. Строка
может быть обычным IP-адресом, hostname/именем хоста, именем сетевого
интерфейса (под UNIX), ил просто обычным "-", используемым для
системного IP-адреса по умолчанию.
- CURLOPT_COOKIE: Передаёт строку с содержимым
куки/cookie, установленным в HTTP header"е.
- CURLOPT_SSLCERT: Передаёт строку, содержащую
filename форматированного сертификата PEM.
- CURLOPT_SSLCERTPASSWD: Передаёт строку, содержащую
password, необходимый для работы сертификата CURLOPT_SSLCERT.
- CURLOPT_COOKIEFILE: Передаёт строку,
содержащую имя файла с данными куки.
Этот cookie-файл может иметь формат Netscape, или содержать обычные
шапки/headers в HTTP-стиле, забитые в файл.
- CURLOPT_CUSTOMREQUEST: Передаёт строку,
используемую вместо
GET или HEAD при выполнении HTTP-запроса. Это
делается для выполнения DELETE или других, более скрытых
HTTP-запросов.
Верными значениями являются GET, POST и так далее; то
есть не вводите здесь полную строку HTTP-запроса.
Например, ввод "GET /index.html HTTP/1.0" будет некорректным.
(не делайте это, если не уверены, что ваш сервер поддерживает эту
команду.)
- CURLOPT_PROXY: Передаёт имя HTTP-прокси туннельным
запросам.
- CURLOPT_INTERFACE: Передаёт имя исходящего сетевого
интерфейса для использования. Это может
быть имя интерфейса, IP-адрес или имя хоста.
( curl_setopt($ch,
CURLOPT_INTERFACE, $extip) )
- CURLOPT_KRB4LEVEL: Передаёт KRB4 (Kerberos
4) уровень секретности. Это любая из следующих строк (в порядке от
менее до более мощной): "clear", "safe",
"confidential", "private".
Если эта строка не совпадает с какой-либо
из указанных, то используется "private".
Если вы установите здесь NULL, это отключит KRB4-безопасность.
KRB4-безопасность работает в настоящее
время только с транзакциями FTP. - CURLOPT_HTTPHEADER: Передаёт массив полей
HTTP-header"а для установки.
- CURLOPT_QUOTE: Передаёт массив FTP-команд для
выполнения на сервере до выполнения FTP-запроса.
- CURLOPT_POSTQUOTE: Передаёт массив FTP-команд для
выполнения на сервере после выполнения FTP-запроса.
Следующие опции ожидают дескриптора файла, который
получается с помощью функции
fopen():
- CURLOPT_FILE: Файл, куда должен быть
помещён вывод вашего трансфера, по умолчанию это STDOUT.
- CURLOPT_INFILE: Файл, из которого приходит
ввод вашего трансфера.
- CURLOPT_WRITEHEADER: Файл для записи header-части
вывода.
- CURLOPT_STDERR: Файл для записи ошибок, вместо
stderr.
Параметр value должен быть функцией следующего вида
long write_callback (resource ch, string data){ ... return
strlen($data);}
для следующих значений параметра option:
- CURLOPT_WRITEFUNCTION: .
- CURLOPT_HEADERFUNCTION: .
Параметр value должен быть функцией следующего вида
string read_callback (resource ch, resource fd, long length){}
для следующих значений параметра option:
curl_exec
curl_exec - выполняет CURL-сессию.
Описаниеbool curl_exec (resource ch)
Эта функция должна вызываться после того, как вы инициализируете
сессию CURL
и все опции этой сессии уже установлены. Её назначение в том, чтобы
просто
выполнить предопределённую CURL-сессию (заданную в параметре ch).
curl_close
curl_close - закрывает CURL-сессию.
Описание
void curl_close ( resource ch) Эта функция закрывает
сессию CURL и освобождает все ресурсы.
CURL-дескриптор ch также удаляется.
curl_errno
curl_errno - возвращает целое число, содержащее номер последней
ошибки.
Описаниеint curl_errno ( resource ch)
curl_error
curl_error - возвращает строку содержащую номер последней ошибки для
текущей сессии.
Описаниеstring curl_error (resource ch)
curl_getinfo
curl_getinfo - получает информацию, касающуюся специфической
передачи/transfer.
Описаниеstring curl_getinfo (resource ch, int opt)
-
CURLINFO_EFFECTIVE_URL - Последний
использованный URL
-
CURLINFO_HTTP_CODE - Последний полученный код
HTTP
-
CURLINFO_FILETIME - Дата модификации
загруженного документа, если она неизвестна, возвращается -1.
-
CURLINFO_TOTAL_TIME - Полное время выполнения
операции в секундах.
-
CURLINFO_NAMELOOKUP_TIME - Время разрешения
имени сервера в секундах.
-
CURLINFO_CONNECT_TIME - Время, затраченное на
установку соединения, в секундах
-
CURLINFO_PRETRANSFER_TIME - Время, прошедшее
от начала операции до готовности к фактической передаче данных, в
секундах
-
CURLINFO_STARTTRANSFER_TIME - Время, прошедшее
от начала операции до момента передачи первого байта данных, в
секундах
-
CURLINFO_REDIRECT_TIME - Общее время,
затраченное на перенапрвления, в секундах
-
CURLINFO_SIZE_UPLOAD - Количество байт при
закачке
-
CURLINFO_SIZE_DOWNLOAD - Количество байт при
загрузке
-
CURLINFO_SPEED_DOWNLOAD - Средняя скорость
закачки
-
CURLINFO_SPEED_UPLOAD - Средняя скорость
загрузки
-
CURLINFO_HEADER_SIZE - Суммарный размер всех
полученных заголовков
-
CURLINFO_REQUEST_SIZE - Суммарный размер всех
отправленных запросов, в настоящее время используется только для
HTTP запросов
-
CURLINFO_SSL_VERIFYRESULT - Результат
проверки SSL сертификата, запрошенной с помощью установки
параметра CURLOPT_SSL_VERIFYPEER
-
CURLINFO_CONTENT_LENGTH_DOWNLOAD -
размер загруженного документа, прочитанный из заголовка
Content-Length
-
CURLINFO_CONTENT_LENGTH_UPLOAD - Размер
закачиваемых данных
-
CURLINFO_CONTENT_TYPE - Содержимое
полученного заголовка Content-type, или NULL в случае, когда
этот
заголовок не был получен
При вызове без необязательного аргумента opt
возвращается ассоциативный массив со следующими индексами, которые
соответствуют значениям аргумента opt:
-
"url"
-
"content_type"
-
"http_code"
-
"header_size"
-
"request_size"
-
"filetime"
-
"ssl_verify_result"
-
"redirect_count"
-
"total_time"
-
"namelookup_time"
-
"connect_time"
-
"pretransfer_time"
-
"size_upload"
-
"size_download"
-
"speed_download"
-
"speed_upload"
-
"download_content_length"
-
"upload_content_length"
-
"starttransfer_time"
-
"redirect_time"
curl_version
curl_version - возвращает версию текущей CURL.
Описание
string curl_version (void) Функция curl_version()
возвращает строку с текущей версией CURL.
curl_version=Array
(
[version_number] => 462597
[age] => 2
[features] => 1597
[ssl_version_number] => 0
[version] => 7.15.5
[host] => x86_64-redhat-linux-gnu
[ssl_version] => OpenSSL/0.9.8b
[libz_version] => 1.2.3
[protocols] => Array
(
[0] => tftp
[1] => ftp
[2] => telnet
[3] => dict
[4] => ldap
[5] => http
[6] => file
[7] => https
[8] => ftps
)
)
1
Предопределённые константы
Эти константы определены данным расширением и будут доступны только в
том
случае, если либо вкомпилированы в РНР, либо динамически загружены на
этапе прогона.
- CURLOPT_PORT (integer)
- CURLOPT_FILE (integer)
- CURLOPT_INFILE (integer)
- CURLOPT_INFILESIZE (integer)
- CURLOPT_URL (integer)
- CURLOPT_PROXY (integer)
- CURLOPT_VERBOSE (integer)
- CURLOPT_HEADER (integer)
- CURLOPT_HTTPHEADER (integer)
- CURLOPT_NOPROGRESS (integer)
- CURLOPT_NOBODY (integer)
- CURLOPT_FAILONERROR (integer)
- CURLOPT_UPLOAD (integer)
- CURLOPT_POST (integer)
- CURLOPT_FTPLISTONLY (integer)
- CURLOPT_FTPAPPEND (integer)
- CURLOPT_NETRC (integer)
- CURLOPT_FOLLOWLOCATION (integer)
- CURLOPT_FTPASCII (integer)
- CURLOPT_PUT (integer)
- CURLOPT_MUTE (integer)
- CURLOPT_USERPWD (integer)
- CURLOPT_PROXYUSERPWD (integer)
- CURLOPT_RANGE (integer)
- CURLOPT_TIMEOUT (integer)
- CURLOPT_POSTFIELDS (integer)
- CURLOPT_REFERER (integer)
- CURLOPT_USERAGENT (integer)
- CURLOPT_FTPPORT (integer)
- CURLOPT_LOW_SPEED_LIMIT (integer)
- CURLOPT_LOW_SPEED_TIME (integer)
- CURLOPT_RESUME_FROM (integer)
- CURLOPT_COOKIE (integer)
- CURLOPT_SSLCERT (integer)
- CURLOPT_SSLCERTPASSWD (integer)
- CURLOPT_WRITEHEADER (integer)
- CURLOPT_SSL_VERIFYHOST (integer)
- CURLOPT_COOKIEFILE (integer)
- CURLOPT_SSLVERSION (integer)
- CURLOPT_TIMECONDITION (integer)
- CURLOPT_TIMEVALUE (integer)
- CURLOPT_CUSTOMREQUEST (integer)
- CURLOPT_STDERR (integer)
- CURLOPT_TRANSFERTEXT (integer)
- CURLOPT_RETURNTRANSFER (integer)
- CURLOPT_QUOTE (integer)
- CURLOPT_POSTQUOTE (integer)
- CURLOPT_INTERFACE (integer)
- CURLOPT_KRB4LEVEL (integer)
- CURLOPT_HTTPPROXYTUNNEL (integer)
- CURLOPT_FILETIME (integer)
- CURLOPT_WRITEFUNCTION (integer)
- CURLOPT_READFUNCTION (integer)
- CURLOPT_PASSWDFUNCTION (integer)
- CURLOPT_HEADERFUNCTION (integer)
- CURLOPT_MAXREDIRS (integer)
- CURLOPT_MAXCONNECTS (integer)
- CURLOPT_CLOSEPOLICY (integer)
- CURLOPT_FRESH_CONNECT (integer)
- CURLOPT_FORBID_REUSE (integer)
- CURLOPT_RANDOM_FILE (integer)
- CURLOPT_EGDSOCKET (integer)
- CURLOPT_CONNECTTIMEOUT (integer)
- CURLOPT_SSL_VERIFYPEER (integer)
- CURLOPT_CAINFO (integer)
- CURLOPT_COOKIEJAR (integer)
- CURLOPT_SSL_CIPHER_LIST (integer)
- CURLOPT_BINARYTRANSFER (integer)
- CURLCLOSEPOLICY_LEAST_RECENTLY_USED (integer)
- CURLCLOSEPOLICY_LEAST_TRAFFIC (integer)
- CURLCLOSEPOLICY_SLOWEST (integer)
- CURLCLOSEPOLICY_CALLBACK (integer)
- CURLCLOSEPOLICY_OLDEST (integer)
- CURLINFO_EFFECTIVE_URL (integer)
- CURLINFO_HTTP_CODE (integer)
- CURLINFO_HEADER_SIZE (integer)
- CURLINFO_REQUEST_SIZE (integer)
- CURLINFO_TOTAL_TIME (integer)
- CURLINFO_NAMELOOKUP_TIME (integer)
- CURLINFO_CONNECT_TIME (integer)
- CURLINFO_PRETRANSFER_TIME (integer)
- CURLINFO_SIZE_UPLOAD (integer)
- CURLINFO_SIZE_DOWNLOAD (integer)
- CURLINFO_SPEED_DOWNLOAD (integer)
- CURLINFO_SPEED_UPLOAD (integer)
- CURLINFO_FILETIME (integer)
- CURLINFO_SSL_VERIFYRESULT (integer)
- CURLINFO_CONTENT_LENGTH_DOWNLOAD (integer)
- CURLINFO_CONTENT_LENGTH_UPLOAD (integer)
- CURLE_OK (integer)
- CURLE_UNSUPPORTED_PROTOCOL (integer)
- CURLE_FAILED_INIT (integer)
- CURLE_URL_MALFORMAT (integer)
- CURLE_URL_MALFORMAT_USER (integer)
- CURLE_COULDNT_RESOLVE_PROXY (integer)
- CURLE_COULDNT_RESOLVE_HOST (integer)
- CURLE_COULDNT_CONNECT (integer)
- CURLE_FTP_WEIRD_SERVER_REPLY (integer)
- CURLE_FTP_ACCESS_DENIED (integer)
- CURLE_FTP_USER_PASSWORD_INCORRECT (integer)
- CURLE_FTP_WEIRD_PASS_REPLY (integer)
- CURLE_FTP_WEIRD_USER_REPLY (integer)
- CURLE_FTP_WEIRD_PASV_REPLY (integer)
- CURLE_FTP_WEIRD_227_FORMAT (integer)
- CURLE_FTP_CANT_GET_HOST (integer)
- CURLE_FTP_CANT_RECONNECT (integer)
- CURLE_FTP_COULDNT_SET_BINARY (integer)
- CURLE_PARTIAL_FILE (integer)
- CURLE_FTP_COULDNT_RETR_FILE (integer)
- CURLE_FTP_WRITE_ERROR (integer)
- CURLE_FTP_QUOTE_ERROR (integer)
- CURLE_HTTP_NOT_FOUND (integer)
- CURLE_WRITE_ERROR (integer)
- CURLE_MALFORMAT_USER (integer)
- CURLE_FTP_COULDNT_STOR_FILE (integer)
- CURLE_READ_ERROR (integer)
- CURLE_OUT_OF_MEMORY (integer)
- CURLE_OPERATION_TIMEOUTED (integer)
- CURLE_FTP_COULDNT_SET_ASCII (integer)
- CURLE_FTP_PORT_FAILED (integer)
- CURLE_FTP_COULDNT_USE_REST (integer)
- CURLE_FTP_COULDNT_GET_SIZE (integer)
- CURLE_HTTP_RANGE_ERROR (integer)
- CURLE_HTTP_POST_ERROR (integer)
- CURLE_SSL_CONNECT_ERROR (integer)
- CURLE_FTP_BAD_DOWNLOAD_RESUME (integer)
- CURLE_FILE_COULDNT_READ_FILE (integer)
- CURLE_LDAP_CANNOT_BIND (integer)
- CURLE_LDAP_SEARCH_FAILED (integer)
- CURLE_LIBRARY_NOT_FOUND (integer)
- CURLE_FUNCTION_NOT_FOUND (integer)
- CURLE_ABORTED_BY_CALLBACK (integer)
- CURLE_BAD_FUNCTION_ARGUMENT (integer)
- CURLE_BAD_CALLING_ORDER (integer)
- CURLE_HTTP_PORT_FAILED (integer)
- CURLE_BAD_PASSWORD_ENTERED (integer)
- CURLE_TOO_MANY_REDIRECTS (integer)
- CURLE_UNKNOWN_TELNET_OPTION (integer)
- CURLE_TELNET_OPTION_SYNTAX (integer)
- CURLE_OBSOLETE (integer)
- CURLE_SSL_PEER_CERTIFICATE (integer)
|