XII. Функции CURL, Client URL Library
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, вам нужно установить пакет CURL .
PHP требует, чтобы вы использовали CURL 7.0.2-beta или выше. PHP не будет работать с любой версией
CURL ниже 7.0.2-beta.
Для использования РНР-поддержки CURL вы обязаны также скомпилировать PHP
--with-curl[=DIR] , где DIR это местоположение директории, содержащей директории lib и include.
В "include"-директории должна быть папка "curl", которая должна содержать
файлы easy.h и curl.h files. Файл "libcurl.a" должен находиться в директории "lib".
Эти константы определены данным расширением и будут доступны только в том случае, если либо вкомпилированы в РНР, либо динамически загружены на этапе прогона.
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 )
После того как вы скомпилировали PHP с поддержкой CURL, вы можете начать
использовать curl-функций. Основная идея функций CURL - вы инициализируете CURL-сессию
с использованием curl_init() , затем можно установить все ваши опции для трансфера через использование
curl_exec() , а затем закрыть сессию функцией
curl_close() . Вот пример использования CURL-функций для получения страницы example.com в
файле:
Пример 1. Использование модуля CURL РНР для получения example.com
<?php
$ch = curl_init ("http://www.example.com/");
$fp = fopen ("example_homepage.txt", "w");
curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
?>
Содержание curl_close - закрывает сессию CURL
curl_errno - возвращает integer, содержащее номер последней ошибки
curl_error - возвращает строку, содержащую последнюю ошибку текущей сессии
curl_exec - выполняет CURL-сессию
curl_getinfo - получает информацию о специфическом трансфере
curl_init - инициализирует CURL-сессию
curl_setopt - устанавливает опции для CURL-транфера
curl_version - возвращает текущую версию CURL