English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
(PHP 4 >= 4.0.2, PHP 5)
curl_setopt — устанавливает опцию передачи CURL.
bool curl_setopt ( resource $ch , int $option , mixed $value )
устанавливает опцию для заданного дескриптора сеанса CURL.
ch
CURL-дескриптор, возвращаемый curl_init().
option
необходимые опции CURLOPT_XXX.
значение
устанавливается значение, заданное в option.
Для следующих параметров option, значение должно быть установлено в виде bool-типа:
Опция | Опциональнозначениезначение | Примечание |
---|---|---|
CURLOPT_AUTOREFERER | при соответствииLocation:при перенаправлении автоматически устанавливается header сReferer:информация. | |
CURLOPT_BINARYTRANSFER | При включенииCURLOPT_RETURNTRANSFERвозвращается исходный (сырой) вывод. | |
CURLOPT_COOKIESESSION | При включении curl будет передавать только один сеансовый cookie, игнорируя другие cookies, по умолчанию CURL будет возвращать все cookies серверу. Сеансовый cookie - это cookies, которые существуют для того, чтобы�断ить, является ли сеанс сервера действительным. | |
CURLOPT_CRLF | При включении Unix-символы перевода строки будут преобразованы в символы carriage return и newline. | |
CURLOPT_DNS_USE_GLOBAL_CACHE | При включении будет включен глобальный кэш DNS, это безопасно для потоков, и по умолчанию включено. | |
CURLOPT_FAILONERROR | Отображает HTTP-статус код, по умолчанию игнорируется информация с кодом HTTP до 400. | |
CURLOPT_FILETIME | При включении будет пытаться изменить информацию в удаленном документе. Результаты информации будут передаваться через функцию curl_getinfo().CURLINFO_FILETIMEопция. curl_getinfo(). | |
CURLOPT_FOLLOWLOCATION | При включении будет передаваться информация, возвращенная сервером"Location: "Возвращается рекурсивно в заголовке, используетсяCURLOPT_MAXREDIRSМожет ограничивать количество возвращаемых рекурсивно. | |
CURLOPT_FORBID_REUSE | После завершения взаимодействия соединение будет принудительно разорвано, его нельзя будет использовать повторно. | |
CURLOPT_FRESH_CONNECT | Принудительно получить новый соединение, вместо использования сохраненного соединения. | |
CURLOPT_FTP_USE_EPRT | При включении, при загрузке FTP, используется команда EPRT (или LPRT). Установлено вFALSEПри включении EPRT и LPRT будут отключены, используется команда PORT только. | |
CURLOPT_FTP_USE_EPSV | При включении, перед тем как перейти к режиму PASV в процессе передачи FTP, сначала будет尝试 команду EPSV. Установлено вFALSEКоманда EPSV будет отключена. | |
CURLOPT_FTPAPPEND | При включении данные будут добавлены к файлу,而不是 заменять его. | |
CURLOPT_FTPASCII | CURLOPT_TRANSFERTEXTАльтернативное имя. | |
CURLOPT_FTPLISTONLY | При включении будут отображены только имена каталогов FTP. | |
CURLOPT_HEADER | При включении информация из заголовочных файлов будет выведена в виде потока данных. | |
CURLINFO_HEADER_OUT | При включении отслеживается строка запроса хендлера. | Доступно с PHP 5.1.3.CURLINFO_Префикс намеренно(intentional). |
CURLOPT_HTTPGET | При включении метод HTTP будет установлен в GET, так как GET по умолчанию, поэтому используется только в случае изменения. | |
CURLOPT_HTTPPROXYTUNNEL | При включении данные будут передаваться через HTTP-прокси. | |
CURLOPT_MUTE | При включении все измененные параметры функции CURL будут восстановлены в значения по умолчанию. | |
CURLOPT_NETRC | После установления соединения, чтобы получить информацию о имени пользователя и пароле, доступ к файлу ~/.netrc для подключения к удаленному серверу. | |
CURLOPT_NOBODY | При включении не выводится часть BODY в HTML. | |
CURLOPT_NOPROGRESS | При включении отключает прогресс-бар передачи curl, по умолчанию это включено. Заметка: PHP автоматически устанавливает этот параметр вTRUE, этот параметр должен изменяться только для целей отладки. | |
CURLOPT_NOSIGNAL | При включении игнорирует все сигналы, передаваемые curl php. В SAPI многопоточных передачах此项 по умолчанию включено. | включен в CURL 7.10. |
CURLOPT_POST | При включении отправляет обычный POST-запрос, тип:application/x-www-form-urlencodedтакже, как и при отправке формы. | |
CURLOPT_PUT | При включении позволяет отправлять файлы через HTTP, необходимо также установитьCURLOPT_INFILEи(принудительно использовать HTTP/1.0) или. | |
CURLOPT_RETURNTRANSFER | чтобы вернуть информацию, полученную с помощью curl_exec(), в виде потока файла, а не напрямую. | |
CURLOPT_SSL_VERIFYPEER | При отключении CURL прекращает проверку на стороне сервера. ИспользуйтеCURLOPT_CAINFOопция устанавливает использование сертификатовCURLOPT_CAPATHопция устанавливает каталог сертификатов еслиCURLOPT_SSL_VERIFYPEER(по умолчанию 2) включен,CURLOPT_SSL_VERIFYHOSTнеобходимо установитьTRUEв противном случае установитеFALSE. | С версии CURL 7.10 по умолчанию установлено вTRUE. С версии CURL 7.10 по умолчанию устанавливается. |
CURLOPT_TRANSFERTEXT | При включении использует ASCII-режим для FTP-транзакций. Для LDAP он检索纯 текстовую информацию, а не HTML. В Windows-системах система не будетSTDOUTустановите в режим binary. | |
CURLOPT_UNRESTRICTED_AUTH | При использованииCURLOPT_FOLLOWLOCATIONПостоянно добавляет информацию о пользователе и пароле в несколько locations в заголовках, даже если домен изменился. | |
CURLOPT_UPLOAD | При включении позволяет загружать файлы. | |
CURLOPT_VERBOSE | При включении предоставляет все сообщения, хранящиеся вSTDERRили указанногоCURLOPT_STDERR. |
Для следующих опциональных параметров option, значение value должно быть установлено в тип integer:
Опция | Опциональнозначениезначение | Примечание |
---|---|---|
CURLOPT_BUFFERSIZE | Размер кэша, который читается из данных, полученных за один раз, но не гарантируется, что этот размер будет заполнен каждый раз. | Добавлен в CURL 7.10. |
CURLOPT_CLOSEPOLICY | Не CURLCLOSEPOLICY_LEAST_RECENTLY_USED, а CURLCLOSEPOLICY_OLDEST, также существуют еще три CURLCLOSEPOLICY, но CURL пока не поддерживает их. | |
CURLOPT_CONNECTTIMEOUT | Время ожидания перед установлением соединения, если установлено в 0, то ожидание бесконечно. | |
CURLOPT_CONNECTTIMEOUT_MS | 尝试连接等待的时间,以毫秒为单位。如果设置为0,则无限等待。 | 在CURL 7.16.2中被加入。从PHP 5.2.3开始可用。 |
CURLOPT_DNS_CACHE_TIMEOUT | время ожидания подключения в миллисекундах. Если установлено значение 0, ожидание будет неограниченным. | |
CURLOPT_FTPSSLAUTH | был добавлен в CURL 7.16.2. Доступен с PHP 5.2.3.CURLOPT_DNS_CACHE_TIMEOUT устанавливает время хранения информации DNS в памяти, по умолчанию 120 секунд.Способы проверки FTP: CURLFTPAUTH_SSL(сначала попробуйте SSL), CURLFTPAUTH_TLS | (сначала попробуйте TLS) или |
CURLFTPAUTH_DEFAULT | (позволяет CURL автоматически определять). был добавлен в CURL 7.12.2.CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE(по умолчанию, позволяет CURL самостоятельно определять используемую версию), CURL_HTTP_VERSION_1_0 | |
(принудительно использовать HTTP/1.0) или | CURL_HTTP_VERSION_1_1 | |
CURLOPT_INFILESIZE | (принудительно использовать HTTP/1.1).CURLOPT_INFILESIZEограничивает размер загружаемого файла, измеряемый в байтах (byte).CURLOPT_LOW_SPEED_TIMEвремя (bytes/sec), PHP будет определять | |
CURLOPT_LOW_SPEED_TIME | (принудительно использовать HTTP/1.1).CURLOPT_INFILESIZEограничивает размер загружаемого файла, измеряемый в байтах (byte).CURLOPT_LOW_SPEED_TIMEвремя (bytes/sec), PHP будет определять | |
CURLOPT_MAXCONNECTS | максимальное количество разрешенных подключений, при превышении которого будет определяться, отменяется ли передача данных из-за медленной скорости.CURLOPT_CLOSEPOLICYопределяет, какие подключения должны быть прекращены. | |
CURLOPT_MAXREDIRS | определяет максимальное количество HTTP-переадресаций, этот параметр связан сCURLOPT_FOLLOWLOCATIONвместе. | |
CURLOPT_PORT | используется для указания порта подключения. (Опционально) | |
CURLOPT_PROTOCOLS | CURLPROTO_*битового поля указывает. Если включено, значение битового поля ограничивает, какие протоколы могут быть использованы libcurl в процессе передачи данных. Это позволяет поддерживать множество протоколов при компиляции libcurl, но ограничивает использование только подмножеством разрешенных. По умолчанию libcurl будет использовать все поддерживаемые им протоколы. См.CURLOPT_REDIR_PROTOCOLSДоступные опции протоколов: CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_FTP, CURLPROTO_FTPS, CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_TELNET, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_TFTP, CURLPROTO_ALL | добавлен в CURL 7.19.4. |
CURLOPT_PROTOCOLS | CURLPROTO_*битового поля указывает. Если включено, значение битового поля ограничивает, какие протоколы могут быть использованы libcurl в процессе передачи данных. Это позволяет поддерживать множество протоколов при компиляции libcurl, но ограничивает использование только подмножеством разрешенных. По умолчанию libcurl будет использовать все поддерживаемые им протоколы. См.CURLOPT_REDIR_PROTOCOLSДоступные опции протоколов: CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_FTP, CURLPROTO_FTPS, CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_TELNET, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_TFTP, CURLPROTO_ALL | добавлен в CURL 7.19.4. |
CURLOPT_PROXYAUTH | способ проверки подключения HTTP прокси.CURLOPT_HTTPAUTHбитовые флаги для настройки соответствующих параметров. Для проверки代理 толькоCURLAUTH_BASICиCURLAUTH_NTLMв настоящее время поддерживается. | добавлен в CURL 7.10.7. |
CURLOPT_PROXYPORT | порт прокси-сервера. Порт также можно настроить вCURLOPT_PROXYнастройка. | |
CURLOPT_PROXYTYPE | неCURLPROXY_HTTP (по умолчанию) этоCURLPROXY_SOCKS5. | Добавлен в CURL 7.10. |
CURLOPT_REDIR_PROTOCOLS | CURLPROTO_*битовые значения поля. Если включен, битовые значения будут ограничивать передачу потока вCURLOPT_FOLLOWLOCATIONИспользуемые протоколы при следовании за редиректами. Это позволяет ограничить использование протоколов subsets при следовании за редиректами по умолчанию libcurl позволяет использовать все протоколы, кроме FILE и SCP. Это отличается от无条件ного следования за всеми поддерживаемыми протоколами в предварительном релизе 7.19.4. О протоколах см.CURLOPT_PROTOCOLS. | добавлен в CURL 7.19.4. |
CURLOPT_RESUME_FROM | Переносить байтовой смещение при восстановлении передачи (для продолжения загрузки с разрыва). | |
CURLOPT_SSL_VERIFYHOST | 1 Проверяет是否存在 общее имя (common name) в сертификате SSL сервера. Примечание переводчика: Общее имя (Common Name) обычно это имя домена (domain) или поддомена (sub domain), которое вы планируете зарегистрировать SSL сертификат. 2 Проверяет, существует ли общее имя и соответствует ли оно предоставленному имени хоста. | |
CURLOPT_SSLVERSION | версия SSL (2 или 3). По умолчанию PHP автоматически определяет это значение, хотя в некоторых случаях может потребоваться ручная настройка. | |
CURLOPT_TIMECONDITION | Если используетсяCURLOPT_TIMEVALUEесли была изменена после указанного времени, то используетсяCURL_TIMECOND_IFMODSINCEвозвращает страницу, если она не была изменена, иCURLOPT_HEADERесли true, то возвращает"304 Not Modified"заголовок CURLOPT_HEADERесли false, то используетсяCURL_TIMECOND_IFUNMODSINCEпо умолчанию равноCURL_TIMECOND_IFUNMODSINCE. | |
CURLOPT_TIMEOUT | Установить максимальное количество секунд, которое может выполняться CURL. | |
CURLOPT_TIMEOUT_MS | Установить максимальное количество миллисекунд, которое может выполняться CURL. | добавлен в CURL 7.16.2. С PHP 5.2.3 доступен. |
CURLOPT_TIMEVALUE | установитьCURLOPT_TIMECONDITIONВремя戳, используемое по умолчанию, этоCURL_TIMECOND_IFMODSINCE. |
Для этих опций параметр value должен быть установлено значение типа string:
Опция | Опциональнозначениезначение | Примечание |
---|---|---|
CURLOPT_CAINFO | файл, содержащий 1 или несколько сертификатов, которые будут использоваться для проверки сервера. Этот параметр действует только при использовании сCURLOPT_SSL_VERIFYPEER. | |
CURLOPT_CAPATH | каталог, содержащий несколько CA-сертификатов. Этот параметр имеет смысл только при использовании сCURLOPT_SSL_VERIFYPEERвместе. | |
CURLOPT_COOKIE | установить в HTTP-запросе"Cookie: "часть содержимого. Множественные cookie разделены точкой с запятой, после которой идет пробел (например, "fruit=apple; colour=red). | |
CURLOPT_COOKIEFILE | имя файла, содержащего данные cookie, формат файла cookie может быть форматом Netscape или просто информацию HTTP-заголовка записать в файл. | |
CURLOPT_COOKIEJAR | файл для сохранения информации cookie после завершения подключения. | |
CURLOPT_CUSTOMREQUEST | использования пользовательской информации запроса вместо"GET"или"HEAD"в качестве HTTP-запроса. Это необходимо для выполнения"DELETE" или другие более скрытые HTTP-запросы. Validные значения, такие как"GET","POST","CONNECT"и т.д. То есть, не вводите полный HTTP-запрос здесь. Например, вводите"GET /index.html HTTP/1.0\r\n\r\n"неправильный. Заметка: не используйте его, пока не确定 сервер поддерживает этот пользовательский метод запроса. | |
CURLOPT_EGDSOCKET | типаCURLOPT_RANDOM_FILE, кроме сокета Entropy Gathering Daemon. | |
CURLOPT_ENCODING | в заголовке HTTP-запроса"Accept-Encoding: "значение. Поддерживаемые кодирования включают"identity","deflate"и"gzip". Если это пустая строка""заголовки будут отправлены все поддерживаемые типы кодирования. | Добавлен в CURL 7.10. |
CURLOPT_FTPPORT | Эта стоимость будет использоваться для получения IP-адреса, необходимого для команды "POST" FTP. Команда "POST" информирует удаленный сервер о подключении к указанному нами IP-адресу. Эта строка может быть纯 текстовым IP-адресом, именем хоста, именем сетевого интерфейса (в UNIX) или просто "-", чтобы использовать défaut IP-адрес по умолчанию. | |
CURLOPT_INTERFACE | имя интерфейса для отправки в сеть, может быть именем интерфейса, IP-адресом или именем хоста. | |
CURLOPT_KRB4LEVEL | Уровень безопасности KRB4 (Kerberos 4). Любое из следующих значений является допустимым (в порядке от низкого к высокому):"clear","safe","confidential","private".. Если строка не совпадает с этими значениями, будет использоваться"private". Этот параметр установлен вNULLбудет отключен KRB4 безопасный认证. В настоящее время KRB4 безопасный认证 может использоваться только для передачи FTP. | |
CURLOPT_POSTFIELDS | Все данные отправляются с помощью операции "POST" в протоколе HTTP. Чтобы отправить файл, добавьте перед именем файла@префикс и использование полного пути. Этот параметр можно передать в виде строки, закодированной в URL, напримерpara1=val1¶2=val2&...или использование массива, где ключом является имя поля, а значением является данные поля. Еслизначениеявляется массивом,Content-Typeзаголовок будет установлен какmultipart/form-data. | |
CURLOPT_PROXY | HTTP-канал прокси. | |
CURLOPT_PROXYUSERPWD | Использование для подключения к прокси-серверу"[username]:[password]"строки в формате. | |
CURLOPT_RANDOM_FILE | имя файла, используемого для генерации случайных чисел для SSL. | |
CURLOPT_RANGE | с"X-Y"в виде, где X и Y являются опциональными, это диапазон данных для получения, измеряемый в байтах. HTTP-тред также поддерживает несколько таких повторяющихся элементов, разделенных запятыми, как"X-Y,N-M". | |
CURLOPT_REFERER | в заголовке HTTP-запроса"Referer: "содержимого. | |
CURLOPT_SSL_CIPHER_LIST | список шифров SSL. НапримерRC4-SHAиTLSv1являются доступными списками шифрования. | |
CURLOPT_SSLCERT | имя файла, содержащего сертификат в формате PEM. | |
CURLOPT_SSLCERTPASSWD | ИспользованиеCURLOPT_SSLCERTПароль, необходимый для сертификата. | |
CURLOPT_SSLCERTTYPE | Тип сертификата. Поддерживаемые форматы включают"PEM" (по умолчанию), "DER"и"ENG". | добавлен в CURL 7.9.3. |
CURLOPT_SSLENGINE | Используется дляCURLOPT_SSLKEY中指定的SSL私钥的加密引擎变量。 | |
Переменная для криптографического двигателя SSL частного ключа, указанного в | CURLOPT_SSLENGINE_DEFAULT | |
CURLOPT_SSLKEY | Переменная для асимметричной криптографической операции. | |
Имя файла, содержащего SSL частный ключ. | CURLOPT_SSLKEYPASSWDCURLOPT_SSLKEYПароль SSL частного ключа, указанного в Заметка: Поскольку этот параметр содержит конфиденциальную информацию о пароле, помните о безопасности PHP скрипта. | |
CURLOPT_SSLKEYTYPE | CURLOPT_SSLKEYТип шифрования私анного ключа, указанного в"PEM"(по умолчанию),"DER"и"ENG". | |
CURLOPT_URL | Адрес URL, который нужно получить, также можно установить в функции curl_init(). | |
CURLOPT_USERAGENT | Включите в HTTP запрос:"User-Agent: "Строка заголовка. | |
CURLOPT_USERPWD | Передайте имя пользователя и пароль, необходимые для подключения, в следующем формате:"[username]:[password]". |
Для параметров опций, связанных с option, значение value должно быть установлено в массив:
Опция | Опциональнозначениезначение | Примечание |
---|---|---|
CURLOPT_HTTP200ALIASES | Массив кодов ответа 200, где коды в массиве считаются правильными ответами, все остальные считаются неправильными. | Добавлен в CURL 7.10.3. |
CURLOPT_HTTPHEADER | Массив для установки HTTP заголовков. Установите массив в следующем формате: array('Content-type: text/plain', 'Content-length: 100') | |
CURLOPT_POSTQUOTE | Группа команд FTP, выполняемых на сервере после выполнения запроса FTP. | |
CURLOPT_QUOTE | Группа команд FTP, выполняемых на сервере до запроса FTP. |
Для параметров опций, связанных с option, значение value должно быть установлено в потоковый ресурс (например, используя fopen()):
Опция | Опциональнозначениезначение |
---|---|
CURLOPT_FILE | Установите положение файла вывода, значение является типом ресурса, по умолчанию это:STDOUT (браузер). |
CURLOPT_INFILE | Адрес файла, который необходимо читать при загрузке файла, значение является типом ресурса. |
CURLOPT_STDERR | Установите адрес ошибки для вывода, значение является типом ресурса, заменяя defaultManager.STDERR. |
CURLOPT_WRITEHEADER | Установите адрес файла для записи содержимого заголовка, значение является типом ресурса. |
Для параметров опций, связанных с option, значение value должно быть установлено в имя回调 функции:
Опция | Опциональнозначениезначение |
---|---|
CURLOPT_HEADERFUNCTION | Установить callback функцию, которая принимает два параметра, первый из которых - ресурс CURL, второй - данные заголовка, которые необходимо вывести. Вывод данных заголовка зависит от этой функции, возвращает размер данных, уже введенных. |
CURLOPT_PASSWDFUNCTION | Установить callback функцию, которая принимает три параметра, первый из которых - ресурс CURL, второй - запрос на пароль, третий параметр - максимальная длина пароля, которую можно ввести. Возвращает значение пароля. |
CURLOPT_PROGRESSFUNCTION | Установить回调 функцию, которая принимает три параметра, первый из которых - дескриптор ресурса CURL, второй - файловый ресурс, третий - длина. Возвращает данные. |
CURLOPT_READFUNCTION | Имя回调 функции. Эта функция должна принимать три параметра. Первый - ресурс CURL; второй - данные, переданные через опции CURLOPT_INFILE Поток ресурса, переданного CURL; третий параметр - максимальное количество данных, которое можно прочитать. Возврат Функция вызова должна возвращать строку, длина которой не превышает количество запрашиваемых данных (третий параметр). Обычно данные берутся из传入ного потока Чтение ресурса. Возвращает пустую строку в качестве EOFСигнал (конец файла). |
CURLOPT_WRITEFUNCTION | Имя回调 функции. Эта функция должна принимать два параметра. Первый - ресурс CURL; второй - строка данных для записи. Данные должны быть сохранены в функции. Функция должна возвращать точное количество байтов, переданных для записи, в противном случае передача будет прервана ошибкой. Прерывание. |
Возвращает TRUE при успешном выполнении или FALSE при ошибке.
Версия | Объяснение |
---|---|
5.2.10 | Введение CURLOPT_PROTOCOLS , иCURLOPT_REDIR_PROTOCOLS . |
5.1.0 | Введение CURLOPT_AUTOREFERER ,CURLOPT_BINARYTRANSFER ,CURLOPT_FTPSSLAUTH ,CURLOPT_PROXYAUTH , иCURLOPT_TIMECONDITION . |
5.0.0 | Введение CURLOPT_FTP_USE_EPRT ,CURLOPT_NOSIGNAL ,CURLOPT_UNRESTRICTED_AUTH ,CURLOPT_BUFFERSIZE ,CURLOPT_HTTPAUTH ,CURLOPT_PROXYPORT ,CURLOPT_PROXYTYPE ,CURLOPT_SSLCERTTYPE , иCURLOPT_HTTP200ALIASES . |
Инициализировать новую сессию CURL и получить веб-страницу
<?php //Создать новый ресурс CURL $ch = curl_init(); //Установить URL и соответствующие параметры curl_setopt($ch, CURLOPT_URL, "http://ru.oldtoolbag.com/"); curl_setopt($ch, CURLOPT_HEADER, false); //Получить URL и передать его браузеру curl_exec($ch); //Закрыть ресурс CURL и освободить системные ресурсы curl_close($ch); ?>
Пример загрузки файла:
<?php /* http://localhost/upload.php: print_r($_POST); print_r($_FILES); */ $ch = curl_init(); $data = array('name' => 'Foo', 'file' => '@/home/user/test.png'); curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_exec($ch); ?>
Результат примера вывода следующий:
Массив ( [name] => Foo ) Массив ( [file] => Массив ( [name] => test.png [type] => image/png [tmp_name] => /tmp/phpcpjNeQ [error] => 0 [size] => 279 ) )
Передайте массив в CURLOPT_POSTFIELDS, и CURL закодирует данные в multipart/form-data, в противном случае, если передается URL-кодированная строка, данные будут закодированы в application/x-www-form-urlencoded.