设置 cURL 传输选项

# curl_setopt

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

curl_setopt — 设置 cURL 传输选项

### 说明

function curl_setopt(CurlHandle `$handle`, int `$option`, mixed `$value`): bool

为 cURL 会话句柄设置选项。

### 参数

`handle`
  由 curl_init() 返回的 cURL 句柄。
`option`

  需要设置的 `CURLOPT_*` 选项。

`value`

  将设置在 `option` 选项上的值。有关每个常量期望的值类型的详情，请参阅 `CURLOPT_*` 常量的描述。

### 返回值

成功时返回 `true`， 或者在失败时返回 `false`。

### 更新日志

版本 | 说明
--- | ---
8.4.0 | `CURLOPT_DNS_USE_GLOBAL_CACHE` 不再有任何效果，并且在线程安全 PHP 上启用不再触发警告。
8.0.0 | `handle` 现在接受 CurlHandle 实例；之前接受 resource。
7.3.15、7.4.3 | 引入 `CURLOPT_HTTP09_ALLOWED`。
7.3.0 | 引入 `CURLOPT_ABSTRACT_UNIX_SOCKET`、`CURLOPT_KEEP_SENDING_ON_ERROR`、`CURLOPT_PRE_PROXY`、`CURLOPT_PROXY_CAINFO`、`CURLOPT_PROXY_CAPATH`、`CURLOPT_PROXY_CRLFILE`、`CURLOPT_PROXY_KEYPASSWD`、`CURLOPT_PROXY_PINNEDPUBLICKEY`、`CURLOPT_PROXY_SSLCERT`、`CURLOPT_PROXY_SSLCERTTYPE`、`CURLOPT_PROXY_SSL_CIPHER_LIST`、`CURLOPT_PROXY_SSLKEY`、`CURLOPT_PROXY_SSLKEYTYPE`、`CURLOPT_PROXY_SSL_OPTIONS`、`CURLOPT_PROXY_SSL_VERIFYHOST`、`CURLOPT_PROXY_SSL_VERIFYPEER`、`CURLOPT_PROXY_SSLVERSION`、`CURLOPT_PROXY_TLSAUTH_PASSWORD`、`CURLOPT_PROXY_TLSAUTH_TYPE`、`CURLOPT_PROXY_TLSAUTH_USERNAME`、`CURLOPT_SOCKS5_AUTH`、`CURLOPT_SUPPRESS_CONNECT_HEADERS`、`CURLOPT_DISALLOW_USERNAME_IN_URL`、`CURLOPT_DNS_SHUFFLE_ADDRESSES`、`CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS`、`CURLOPT_HAPROXYPROTOCOL`、`CURLOPT_PROXY_TLS13_CIPHERS`、`CURLOPT_SSH_COMPRESSION`、`CURLOPT_TIMEVALUE_LARGE` 和 `CURLOPT_TLS13_CIPHERS`。
7.0.7 | 引入 `CURL_HTTP_VERSION_2`、`CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE`、 `CURL_HTTP_VERSION_2TLS`、`CURL_REDIR_POST_301`、 `CURL_REDIR_POST_302`、`CURL_REDIR_POST_303`、 `CURL_REDIR_POST_ALL`、`CURL_VERSION_KERBEROS5`、 `CURL_VERSION_PSL`、`CURL_VERSION_UNIX_SOCKETS`、 `CURLAUTH_NEGOTIATE`、`CURLAUTH_NTLM_WB`、 `CURLFTP_CREATE_DIR`、`CURLFTP_CREATE_DIR_NONE`、 `CURLFTP_CREATE_DIR_RETRY`、`CURLHEADER_SEPARATE`、 `CURLHEADER_UNIFIED`、`CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE`、 `CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE`、`CURLMOPT_MAX_HOST_CONNECTIONS`、 `CURLMOPT_MAX_PIPELINE_LENGTH`、`CURLMOPT_MAX_TOTAL_CONNECTIONS`、 `CURLOPT_CONNECT_TO`、`CURLOPT_DEFAULT_PROTOCOL`、 `CURLOPT_DNS_INTERFACE`、`CURLOPT_DNS_LOCAL_IP4`、 `CURLOPT_DNS_LOCAL_IP6`、`CURLOPT_EXPECT_100_TIMEOUT_MS`、 `CURLOPT_HEADEROPT`、`CURLOPT_LOGIN_OPTIONS`、 `CURLOPT_PATH_AS_IS`、`CURLOPT_PINNEDPUBLICKEY`、 `CURLOPT_PIPEWAIT`、`CURLOPT_PROXY_SERVICE_NAME`、 `CURLOPT_PROXYHEADER`、`CURLOPT_SASL_IR`、 `CURLOPT_SERVICE_NAME`、`CURLOPT_SSL_ENABLE_ALPN`、 `CURLOPT_SSL_ENABLE_NPN`、`CURLOPT_SSL_FALSESTART`、 `CURLOPT_SSL_VERIFYSTATUS`、`CURLOPT_STREAM_WEIGHT`、 `CURLOPT_TCP_FASTOPEN`、`CURLOPT_TFTP_NO_OPTIONS`、 `CURLOPT_UNIX_SOCKET_PATH`、`CURLOPT_XOAUTH2_BEARER`、 `CURLPROTO_SMB`、`CURLPROTO_SMBS`、 `CURLPROXY_HTTP_1_0`、`CURLSSH_AUTH_AGENT` 和 `CURLSSLOPT_NO_REVOKE`。

### 示例

示例 #1 初始化一个新的cURL会话并获取一个网页

    <?php
    // 创建一个新cURL资源
    $ch = curl_init();

    // 设置URL和相应的选项
    curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
    curl_setopt($ch, CURLOPT_HEADER, false);

    // 抓取URL并把它传递给浏览器
    curl_exec($ch);
    ?>

### 注释

> 注意:

> 传递一个数组到`CURLOPT_POSTFIELDS`，cURL会把数据编码成 multipart/form-data，而然传递一个URL-encoded字符串时，数据会被编码成 application/x-www-form-urlencoded。

### 参见

- curl_setopt_array() - 为 cURL 传输会话批量设置选项
- CURLFile
- CURLStringFile

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open