curl_setopt

cURL 転送用オプションを設定する

説明

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

指定した cURL セッションハンドルのオプションを設定します。

パラメータ

handle

curl_init が返す cURL ハンドル。

option

設定したい CURLOPT_XXX オプション。

value

option に設定する値。

value には、 option の以下の値に関して bool 値を指定する必要があります。

オプション value への設定値 注記
CURLOPT_AUTOREFERER true を設定すると、Location: によるリダイレクトを たどる際には自動的に Referer: フィールドをリクエストに 追加します。
CURLOPT_COOKIESESSION true を設定すると、クッキーの "セッション" を新しく開始します。 以前のセッションで読み込まれていた "セッションクッキー" は無視するよう、 libcurl に指示します。デフォルトでは、それがセッションクッキーであるか どうかにかかわらず libcurl はすべてのクッキーを読み込んで保存します。 セッションクッキーとは、有効期限が指定されておらず "セッション" の間のみ 有効であるクッキーのことです。
CURLOPT_CERTINFO true を設定すると、セキュアな転送時に SSL 証明書の情報を STDERR に出力します。 cURL 7.19.1 で追加されました。 これを使うには、CURLOPT_VERBOSE を on にしておかなければなりません。
CURLOPT_CONNECT_ONLY true を設定すると、プロキシの認証や接続の確立などをすべて行いますが、データは転送しません。 このオプションは、HTTP や SMTP そして POP3 用に実装されています。 cURL 7.15.2 で追加されました。
CURLOPT_CRLF true を設定すると、転送時に Unix 形式の改行を CRLF 形式に変換します。
CURLOPT_DISALLOW_USERNAME_IN_URL ユーザー名をURLに含めてはいけない場合に true にします。 デフォルトは 0 で、ユーザー名は許可されています。 cURL 7.61.0 で追加されました。 PHP 7.3.0 以降で利用可能です。
CURLOPT_DNS_SHUFFLE_ADDRESSES 名前が解決され、ひとつ以上のIPアドレスが返された際、 ランダムな順番でそれらを利用するために、 返されたアドレスの順番をシャッフルする場合に true にします。 これによって、IPv6 アドレスの前に IPv4 アドレスが使われるなどの事象が起こるかもしれません。 cURL 7.60.0 で追加されました。 PHP 7.3.0 以降で利用可能です。
CURLOPT_HAPROXYPROTOCOL HAProxy Proxy プロトコル v1 ヘッダを接続の開始時に送信する場合に true にします。 デフォルトではこのヘッダは送信されません。 cURL 7.60.0 で追加されました。 PHP 7.3.0 以降で利用可能です。
CURLOPT_SSH_COMPRESSION ビルトインの SSH 圧縮を有効にする場合に true にします。 これはリクエストであり、命令ではありません。 つまり、圧縮されるかどうかはサーバー次第です。 cURL 7.56.0 で追加されました。 PHP 7.3.0 以降で利用可能です。
CURLOPT_DNS_USE_GLOBAL_CACHE true を設定すると、グローバル DNS キャッシュを利用します。 このオプションはスレッドセーフではありません。 また、PHP がスレッドセーフでない用途でビルドされている場合 (CLI, FCGI, Apache2-Prefork など) には、デフォルトで有効になっています。
CURLOPT_FAILONERROR true を設定すると、HTTP で 400 以上のコードが返ってきた際に 処理失敗と判断します。デフォルトでは、コードの値を無視して ページの内容を取得します。
CURLOPT_SSL_FALSESTART true にすると、TLS false start を有効にします。 cURL 7.42.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_FILETIME true を設定すると、ドキュメントの更新日時を取得しようと試みます。 この値を取得するには、curl_getinfoCURLINFO_FILETIME オプションを用います。
CURLOPT_FOLLOWLOCATION true を設定すると、サーバーが HTTP ヘッダの一部として送ってくる "Location: " ヘッダの内容をたどります。 CURLOPT_MAXREDIRS も参照ください。
CURLOPT_FORBID_REUSE true を設定すると、処理が終了した際に明示的に接続を切断します。 接続を再利用しません。
CURLOPT_FRESH_CONNECT true を設定すると、キャッシュされている接続を利用せずに 新しい接続を確立します。
CURLOPT_FTP_USE_EPRT true を設定すると、FTP のダウンロードに EPRT(および LPRT) を利用します。false の場合は EPRT・LPRT を無効にして PORT を利用します。
CURLOPT_FTP_USE_EPSV true を設定すると、FTP 転送の際にまず EPSV コマンドの利用を 試みます。失敗した場合は PASV を利用します。false を設定すると、 EPSV を無効にします。
CURLOPT_FTP_CREATE_MISSING_DIRS true を設定すると、FTP の操作中にパスが存在しなかったときに ディレクトリを作成します。
CURLOPT_FTPAPPEND true を設定すると、リモートファイルを上書きせずに追記します。
CURLOPT_TCP_NODELAY true にすると、TCP の Nagle アルゴリズムを解除します。解除すると、小さなパケットがネットワーク上を流れる回数をできるだけ減らそうと試みます。 libcurl 7.11.2 以降と組み合わせてコンパイルしたときに利用可能です。
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT のエイリアスです。
CURLOPT_FTPLISTONLY true を設定すると、FTP でディレクトリ名のみ表示します。
CURLOPT_HEADER true を設定すると、ヘッダの内容も出力します。
CURLINFO_HEADER_OUT true を設定すると、リクエスト文字列を追跡します。 プレフィックスが CURLINFO_ となっているのは意図的なものです。
CURLOPT_HTTP09_ALLOWED HTTP/0.9 形式のレスポンスを許可するかどうか。libcurl 7.66.0 以降のデフォルトは false です。 それより前のバージョンのデフォルトは true でした。 PHP 7.3.15 と 7.4.3 以降 および cURL >= 7.64.0 をビルドした場合に使用可能です。
CURLOPT_HTTPGET true を設定すると、HTTP のリクエスト形式を GET に戻します。 GET はデフォルト設定なので、リクエスト形式が変更されている 場合にのみ必要となります。
CURLOPT_HTTPPROXYTUNNEL true にすると、指定された HTTP プロキシを介してトンネルします。
CURLOPT_HTTP_CONTENT_DECODING false を設定すると、生の HTTP レスポンスボディを取得します。 libcurl >= 7.16.2 とビルドした場合に利用可能です。
CURLOPT_KEEP_SENDING_ON_ERROR 返されたHTTPコードが300以上であっても、リクエストボディを送信し続ける場合は true にします。 デフォルトのアクションはリクエストボディの送信を止め、 ストリームまたは接続を閉じます。 手動でNTLM認証を行う場合に、このオプションは適切です。 ほとんどのアプリケーションは、このオプションは不要です。 PHP 7.3.0 以降で、libcurl >= 7.51.0 とビルドした場合に利用可能です。
CURLOPT_MUTE true を設定すると、cURL 関数に関連する出力を完全に抑えます。 cURL 7.15.5 で削除されました (かわりに CURLOPT_RETURNTRANSFER が使えます)
CURLOPT_NETRC true を設定すると、リモートサイトと接続を確立する際に用いる ユーザー名やパスワードを、~/.netrc から取得します。
CURLOPT_NOBODY true を設定すると、出力から本文を削除します。 リクエストメソッドは HEAD となります。これを false に変更してもリクエストメソッドは GET には変わりません。
CURLOPT_NOPROGRESS

true を設定すると、cURL 転送の進捗状況表示を無効にします。

注意:

PHP は、このオプションを自動的に true に設定します。 これを変更するのは、デバッグ時のみにすべきです。

CURLOPT_NOSIGNAL true を設定すると、cURL 関数が PHP プロセスに送信するシグナルを 無視します。マルチスレッド SAPI ではデフォルトで on となっており、 そのためタイムアウトオプションもまだ利用されています。 cURL 7.10 で追加されました。
CURLOPT_PATH_AS_IS true にすると、ドットの連続を処理しません。 cURL 7.42.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_PIPEWAIT true にすると、パイプライン化/多重化を待ちます。 cURL 7.42.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_POST true を設定すると、HTTP POST を行います。POST は、 application/x-www-form-urlencoded 形式で 行われます。これは一般的な HTML のフォームと同じ形式です。
CURLOPT_PUT true を設定すると、HTTP PUT を行います。PUT するファイルは CURLOPT_INFILE および CURLOPT_INFILESIZE で指定されている必要があります。
CURLOPT_RETURNTRANSFER true を設定すると、curl_exec の戻り値を 文字列で返します。通常はデータを直接出力します。
CURLOPT_SASL_IR true にすると、最初のパケット内の最初のレスポンスの送信を有効にします。 cURL 7.31.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_SSL_ENABLE_ALPN false にすると、SSL ハンドシェイクの際の ALPN を無効にします (SSL バックエンドの libcurl がそれに対応するビルドである場合)。 これは、http2 ネゴシエーションに使えます。 cURL 7.36.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_SSL_ENABLE_NPN false にすると、SSL ハンドシェイクの際の NPN を無効にします (SSL バックエンドの libcurl がそれに対応するビルドである場合)。 これは、http2 ネゴシエーションに使えます。 cURL 7.36.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_SSL_VERIFYPEER false を設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書を CURLOPT_CAINFO オプションで 指定するか、CURLOPT_CAPATH オプションで 証明ディレクトリを指定します。 cURL 7.10 以降、デフォルト値は true です。また、 cURL 7.10 以降、デフォルトでインストールされています。
CURLOPT_SSL_VERIFYSTATUS true にすると、証明書のステータスを検証します。 cURL 7.41.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_PROXY_SSL_VERIFYPEER false を設定すると、cURL がピアの証明書の検証を行わなくなります。 別の証明書を検証するには、CURLOPT_CAINFO オプションで指定するか、 CURLOPT_CAPATH を使って証明書のディレクトリを指定するやり方が使えます。 false を指定すると、ピアの証明書の検証はオプションに関係なく成功します。 true がデフォルトです。 PHP 7.3.0 以降で、libcurl >= 7.52.0 とビルドした場合に利用可能です。
CURLOPT_SAFE_UPLOAD この値は常に true になります。 CURLOPT_POSTFIELDS を使ってファイルをアップロードする際に、 プレフィックス @ のサポートを無効にします。 これは、@ で始まる値を安全にフィールドに渡せるということです。 CURLFile も代わりに使えます。
CURLOPT_SUPPRESS_CONNECT_HEADERS true を設定すると、 CURLOPT_HTTPPROXYTUNNEL を使って CONNECT リクエストが生成された場合に、 ユーザーのコールバック関数 CURLOPT_HEADERFUNCTION および CURLOPT_WRITEFUNCTION では proxy CONNECT のレスポンスヘッダを抑制します。 cURL 7.54.0 で追加されました。PHP 7.3.0 以降で使用可能です。
CURLOPT_TCP_FASTOPEN true にすると、TCP Fast Open を有効にします。 cURL 7.49.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_TFTP_NO_OPTIONS true にすると、TFTP オプションリクエストを送信しません。 cURL 7.48.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_TRANSFERTEXT true を設定すると、FTP 転送を ASCII モードで行います。 LDAP の場合は、データを HTML ではなくプレーンテキストで取得します。 Windows システムでは STDOUT に対してバイナリモードを設定しないでください。
CURLOPT_UNRESTRICTED_AUTH true を設定すると、(CURLOPT_FOLLOWLOCATION を利用して)場所をたどっていく際にユーザー名とパスワードを送信し続けます。 これは、たとえホスト名が変わっても続けられます。
CURLOPT_UPLOAD true を設定すると、アップロードの準備をします。
CURLOPT_VERBOSE true を設定すると、詳細な情報を出力します。情報は STDERR か、または CURLOPT_STDERR で指定したファイルに出力されます。

value には、 option の以下の値に関して 整数値を指定する必要があります。

オプション value への設定値 注記
CURLOPT_BUFFERSIZE 1 回の読み込みに用いるバッファのサイズ。しかしながら、必ず このバッファいっぱいまで読み込まれることを保証するものではありません。 cURL 7.10 で追加されました。
CURLOPT_CONNECTTIMEOUT 接続の試行を待ち続ける秒数。0 は永遠に待ち続けることを意味します。
CURLOPT_CONNECTTIMEOUT_MS 接続の試行を待ち続けるミリ秒数。0 は永遠に待ち続けることを意味します。 システムの標準の名前解決を使うように libcurl をビルドしている場合は、 接続のタイムアウトは秒単位の精度となり、最小のタイムアウトは 1 秒となります。 cURL 7.16.2 で追加されました。
CURLOPT_DNS_CACHE_TIMEOUT DNS エントリをメモリ内に保持し続ける秒数。デフォルトでは 120(2 分)に設定されています。
CURLOPT_EXPECT_100_TIMEOUT_MS Expect: 100-continue のレスポンスを待つタイムアウト。 ミリ秒で指定します。 デフォルトは1000ミリ秒です。 cURL 7.36.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS Happy Eyeballs アルゴリズムで IPv6 接続を優先して開始します。 Happy Eyeballs アルゴリズムは、 デュアルスタックホストのために IPv4 と IPv6アドレス両方に接続を試みますが、 IPv6 を優先して扱い、そのタイムアウトをミリ秒単位で指定します。 デフォルトは CURL_HET_DEFAULT であり、現状は200ミリ秒です。 cURL 7.59.0 で追加されました。PHP 7.3.0 以降で使用可能です。
CURLOPT_FTPSSLAUTH (使用可能な場合の)FTP 認証方法。 CURLFTPAUTH_SSL(まず SSL を試す)、 CURLFTPAUTH_TLS(まず TLS を試す)あるいは CURLFTPAUTH_DEFAULT(cURL が決める)のいずれかです。 cURL 7.12.2 で追加されました。
CURLOPT_HEADEROPT

ヘッダをどう扱うかを指定します。 次の定数のうち、一つを指定できます:

CURLHEADER_UNIFIED
CURLOPT_HTTPHEADER で指定されたヘッダが、 サーバーとプロキシ双方のリクエストに対して使われます。 このオプションが有効な場合、 CURLOPT_PROXYHEADER は効果がありません。
CURLHEADER_SEPARATE
CURLOPT_HTTPHEADER で指定されたヘッダは、 プロキシには送られず、サーバーにのみ送られます。 プロキシに送るヘッダは、 CURLOPT_PROXYHEADER を設定しなければなりません。 CONNECT でないリクエストがプロキシに送信された場合、 libcurl はサーバーとプロキシ両方にヘッダを送信することに注意してください。 CONNECT リクエストを送信する場合、 libcurl は CURLOPT_PROXYHEADER をプロキシのみに送り、 CURLOPT_HTTPHEADER をサーバーにのみ送信します。

cURL 7.42.1 以降は CURLHEADER_SEPARATE がデフォルトで、 それより前では、 CURLHEADER_UNIFIED がデフォルトでした。
cURL 7.37.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (デフォルト。 使用するバージョンを決めるのは cURL にまかせる)、 CURL_HTTP_VERSION_1_0 (HTTP/1.0 を使用する)、 あるいは CURL_HTTP_VERSION_1_1 (HTTP/1.1 を使用する) CURL_HTTP_VERSION_2_0 (HTTP 2 の使用を試みる), CURL_HTTP_VERSION_2 (CURL_HTTP_VERSION_2_0 のエイリアス), CURL_HTTP_VERSION_2TLS (TLS (https) の場合のみ HTTP 2 の使用を試みる) または CURL_HTTP_VERSION_2_PRIOR_KNOWLEDGE (HTTP 1.1 へのアップグレードを行わず、HTTP/2 を使って TLS でないリクエストを発行する) のいずれかです。
CURLOPT_HTTPAUTH

使用する HTTP 認証方法。以下の中から選びます。 CURLAUTH_BASICCURLAUTH_DIGESTCURLAUTH_GSSNEGOTIATECURLAUTH_NTLMCURLAUTH_AWS_SIGV4CURLAUTH_ANY および CURLAUTH_ANYSAFE

2 つ以上の方法を組み合わせるには、ビット演算子 |(or) を使用します。このような場合、cURL はサーバーがサポートしている方法を 問い合わせたうえで最適な方法を選択します。

CURLAUTH_ANY は、全てのビットを設定します。 この場合 cURL は、もっともセキュアなものを自動で選択します。

CURLAUTH_ANYSAFE は、 CURLAUTH_BASIC 以外の全てのビットを設定します。 この場合 cURL は、もっともセキュアなものを自動で選択します。

CURLOPT_INFILESIZE ファイルをリモートサイトにアップロードする際のファイルサイズ。 このオプションを指定しても、libcurl がそれ以上のデータを送信するのは止められないことに注意しましょう。 実際に何が送信されるのかは CURLOPT_READFUNCTION に依存します。
CURLOPT_LOW_SPEED_LIMIT 1 秒あたりのバイト数で、転送速度がこれより遅い期間が CURLOPT_LOW_SPEED_TIME 秒以上続いた場合に PHP は転送を終了します。
CURLOPT_LOW_SPEED_TIME 転送速度が CURLOPT_LOW_SPEED_LIMIT より遅い期間がどれだけ続いた場合に転送を異常終了させるかを、 秒単位で指定します。
CURLOPT_MAIL_RCPT_ALLLOWFAILS 送信先によっては、RCPT TO コマンドが失敗することを許可します。 複数の送信先にデータを送る場合、 デフォルトで cURL は RCPT TO コマンドが送信先のうちひとつでも失敗すると、SMTP の通信を中止します。 このオプションは cURL にエラーを無視し、 有効な送信先の処理は続行するように指示します。 すべての送信先の RCPT TO コマンドが失敗した場合にこのフラグが設定されていた場合は、cURL は SMTP の通信を中止し、最後に実行された RCPT TO コマンドから受け取ったエラーを返します。
CURLOPT_MAXAGE_CONN 既存の接続を再利用して良いとみなす、アイドル時間の最大値。 デフォルトは 118 秒に設定されています。
CURLOPT_MAXFILESIZE_LARGE ダウンロードできるファイルの最大サイズをバイト単位で設定します。 この値より大きなファイルがリクエストされた場合、 通信は開始されず、CURLE_FILESIZE_EXCEEDED が返されます。 ダウンロードが始まる前にファイルサイズが常にわかっているわけではないので、ファイルの転送量が指定された最大サイズよりも結局大きかった場合は、このオプションは意味がありません。
CURLOPT_MAXLIFETIME_CONN 接続が作成されてから、 既存の接続を再利用してもよいと見なすまでの時間の最大値。 秒単位で指定します。 接続がキャッシュに存在し、この値より古いことがわかった場合、 転送中の通信が完了した場合に接続は一度クローズされます。 デフォルトは0です。つまり、 このオプションは無効になっており、 あらゆる接続が再利用の対象になります。
CURLOPT_MAXCONNECTS 許可される持続的接続の最大数。もしこの値に達した場合、 オープンされている接続数が増えるのを避けるため、 キャッシュされている接続のうち一番古いものを閉じます。
CURLOPT_MAXREDIRS HTTP のリダイレクト先を追いかける最大値。 CURLOPT_FOLLOWLOCATION とあわせて使用します。 リダイレクトループを避けるため、 デフォルト値として 20 が設定されています。 -1 を設定すると、リダイレクトループを許可します。 0 を指定すると、全てのリダイレクトを拒否します。
CURLOPT_PORT 接続先のポート番号。
CURLOPT_POSTREDIR CURLOPT_FOLLOWLOCATION が設定されているときに、 どの形式のリダイレクトの場合に HTTP POST メソッドを維持するのかを、 1 (301 Moved Permanently)、2 (302 Found)、4 (303 See Other) のビットマスクで指定します。 cURL 7.19.1 で追加されました。
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_MQTT, 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_SOCKS4CURLPROXY_SOCKS5CURLPROXY_SOCKS4A あるいは CURLPROXY_SOCKS5_HOSTNAME cURL 7.10 で追加されました。
CURLOPT_REDIR_PROTOCOLS CURLPROTO_* の値のビットマスク。使用すると、 CURLOPT_FOLLOWLOCATION が有効な場合のリダイレクト時の転送に libcurl がどのプロトコルを使用するのかに制約を加えます。これによって、 リダイレクト時に特定の転送プロトコルのみを使用するように制限することができます。 デフォルトでは、libcurl がサポートしているすべてのプロトコルのうち FILE と SCP 以外のすべての使用を許可します。この挙動は 7.19.4 より前のバージョンとは異なります。7.19.4 より前のバージョンでは、 サポートするすべてのプロトコルを無条件に許可していました。 プロトコル定数の値は CURLOPT_PROTOCOLS を参照ください。 cURL 7.19.4 で追加されました。
CURLOPT_RESUME_FROM 転送を途中から再開する場合のバイトオフセット。
CURLOPT_SOCKS5_AUTH

利用する SOCKS5 認証方法。以下が指定できます: CURLAUTH_BASIC, CURLAUTH_GSSAPI, CURLAUTH_NONE

一つ以上の認証方法を組み合わせるために ビット演算子 | (or) が使えます。 これを使うと、cURL がどの方法をサポートしているかをポーリングし、もっとも良いものを選択します。

CURLAUTH_BASIC を指定すると、ユーザー名/パスワード による認証ができます。

CURLAUTH_GSSAPI を指定すると、GSS-API 認証ができます。

CURLAUTH_NONE を指定すると、認証は行われません。

デフォルトは CURLAUTH_BASIC|CURLAUTH_GSSAPI です。 実際のユーザー名とパスワードは CURLOPT_PROXYUSERPWD オプションを使って設定してください。

PHP 7.3.0 以降 および curl >= 7.55.0 で利用可能です。
CURLOPT_SSL_OPTIONS

SSL 関連の振る舞いのオプションを設定します。 以下に示す定数のビットマスクの組み合わせです:

CURLSSLOPT_ALLOW_BEAST
SSL3 や TLS1.0 プロトコルのセキュリティ上の欠陥を回避するあらゆる手段を使わない。
CURLSSLOPT_NO_REVOKE
証明書の失効チェックを行うSSLバックエンドについて、それを無効にする。
CURLSSLOPT_AUTO_CLIENT_CERT
クライアント証明書を認証のために自動で配置し、 サーバーからリクエストがあったときは利用します。 このオプションは Schannel (native Windows SSL library) でのみサポートされています。
CURLSSLOPT_NATIVE_CA
オペレーティングシステムのネイティブなCAストアを、 証明書の検証に用います。これは OpenSSL を Windows でビルドしたときにのみ使えます。

注意: このオプションは実験的なものであり、振る舞いが変更される可能性があります。

CURLSSLOPT_NO_PARTIALCHAIN
"部分的な" 証明書チェインを許可しません。 この点以外は、cURL のデフォルトの振る舞いをします。 このオプションは、OpenSSL でのみサポートされています。 証明書チェインがルート証明書ではなく、 中間証明書で終わっていた場合は、証明書の検証が失敗します。
CURLSSLOPT_REVOKE_BEST_EFFORT
配布ポイントがオフラインであったり、存在しない場合に、証明書の失効チェックを無視します。 このオプションは Schannel (native Windows SSL library) でのみサポートされています。

注意: CURLSSLOPT_NO_REVOKE と組み合わせて使った場合、後に設定した方が優先されます。

cURL 7.25.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_SSL_VERIFYHOST 2 は、SSL ピア証明書の Subject Alternate Name フィールド、 または Common Name フィールドの値が、指定されたホスト名にマッチするかを調べます。 0 は、名前をチェックしません。 1 は、使うべきではありません。 本番環境では、このオプションの値は常に 2 (デフォルト値) にしておかなければなりません。 1 は、cURL 7.28.1 以降では使えなくなりました。
CURLOPT_SSLVERSION

以下のうちの、いずれかの値です。

  • CURL_SSLVERSION_DEFAULT
  • CURL_SSLVERSION_TLSv1
  • CURL_SSLVERSION_SSLv2
  • CURL_SSLVERSION_SSLv3
  • CURL_SSLVERSION_TLSv1_0
  • CURL_SSLVERSION_TLSv1_1
  • CURL_SSLVERSION_TLSv1_2
  • CURL_SSLVERSION_TLSv1_3

TLSバージョンの最大値は、定数 CURL_SSLVERSION_MAX_* で設定できます。

定数 CURL_SSLVERSION_MAX_* のうちのひとつと、 定数 CURL_SSLVERSION_* のうちのひとつを OR で設定することもできます。

  • CURL_SSLVERSION_MAX_DEFAULT (the maximum version supported by the library)
  • CURL_SSLVERSION_MAX_TLSv1_0
  • CURL_SSLVERSION_MAX_TLSv1_1
  • CURL_SSLVERSION_MAX_TLSv1_2
  • CURL_SSLVERSION_MAX_TLSv1_3

警告

この値は何も設定せず、デフォルトに任せるのが最適です。 CURL_SSLVERSION_SSLv2CURL_SSLVERSION_SSLv3 を設定すると、 SSLv2 および SSLv3 の既知の脆弱性の影響を受けるため、非常に危険です。

CURLOPT_PROXY_SSL_OPTIONS

HTTPSプロキシの振る舞いを設定するオプションです。 これは以下の定数のうち、任意のものを組み合わせたビットマスクです:

CURLSSLOPT_ALLOW_BEAST
SSL3 と TLS1.0 プロトコルに存在する脆弱性を回避するための回避策を使いません。
CURLSSLOPT_NO_REVOKE
SSLバックエンドの証明書の失効チェックを無効にします。 但し、そうした振る舞いが存在した場合に限ります(curl >= 7.44.0)
CURLSSLOPT_NO_PARTIALCHAIN
"部分的な"証明書チェインを許可しません。 デフォルトでは許可されています(curl >= 7.68.0)

PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_SSL_VERIFYHOST HTTPSプロキシの証明書の名前フィールドをプロキシ名と突き合わせて検証する場合 2 を設定します。 0 を設定すると、証明書でどのような名前が使われていようと、接続は成功します。 注意して使用してください! 1 は curl 7.28.0 以前ではデバッグオプションとして扱われていました。 curl 7.28.1 から 7.65.3 までは CURLE_BAD_FUNCTION_ARGUMENT が返されていました。 curl 7.66.0 以降では 12 は同じ値として扱われます。 本番環境では、このオプションの値は (デフォルトの) 2 であるべきです。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_SSLVERSION

以下のうちのひとつが指定できます

  • CURL_SSLVERSION_DEFAULT
  • CURL_SSLVERSION_TLSv1
  • CURL_SSLVERSION_TLSv1_0
  • CURL_SSLVERSION_TLSv1_1
  • CURL_SSLVERSION_TLSv1_2
  • CURL_SSLVERSION_TLSv1_3
  • CURL_SSLVERSION_MAX_DEFAULT
  • CURL_SSLVERSION_MAX_TLSv1_0
  • CURL_SSLVERSION_MAX_TLSv1_1
  • CURL_SSLVERSION_MAX_TLSv1_2
  • CURL_SSLVERSION_MAX_TLSv1_3
  • CURL_SSLVERSION_SSLv3

警告

最も良い選択は、このオプションを設定せず、 デフォルトの CURL_SSLVERSION_DEFAULT を使うことです。 このオプションは、リモートのSSLプロトコルのバージョンを見つけようとします。

PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_STREAM_WEIGHT ストリームの重みを数値で設定します(1 から 256 までの数値) cURL 7.46.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_TCP_KEEPALIVE この値を 1 に設定すると、TCP keepalive のプローブが送信されます。 これらのプローブを送信する頻度と遅延時間は オペレーティングシステムがサポートしていれば CURLOPT_TCP_KEEPIDLECURLOPT_TCP_KEEPINTVL で制御可能です。 0 に設定すると(デフォルト)、keepalive のプローブは送信されません。 cURL 7.25.0 で追加されました。
CURLOPT_TCP_KEEPIDLE CURLOPT_TCP_KEEPALIVE が有効になっている場合に、 keepalive のプローブを送信する前に、接続をアイドルなままにしてオペレーティングシステムを待たせる 遅延時間を秒単位で設定します。 全てのオペレーティングシステムがこのオプションをサポートしているわけではありません。 デフォルトは 60 です。 cURL 7.25.0 で追加されました。
CURLOPT_TCP_KEEPINTVL CURLOPT_TCP_KEEPALIVE が有効になっている場合に、 keepalive のプローブを送信する前に、オペレーティングシステムが待つ間隔を秒単位で設定します。 全てのオペレーティングシステムがこのオプションをサポートしているわけではありません。 デフォルトは 60 です。 cURL 7.25.0 で追加されました。
CURLOPT_TIMECONDITION CURLOPT_TIMEVALUE の扱いを決定します。 CURLOPT_TIMEVALUE で指定した時刻以降に 変更されたページのみを返す場合は CURL_TIMECOND_IFMODSINCE を使用します。 CURLOPT_HEADERtrue だと仮定すると、 ページが変更されていない場合は "304 Not Modified" ヘッダが返されます。 CURL_TIMECOND_IFUNMODSINCE は反対の意味です。 cURL 7.46.0 より前のバージョンでは、 CURL_TIMECOND_IFMODSINCE がデフォルトでした。
CURLOPT_TIMEOUT cURL 関数の実行にかけられる時間の最大値。
CURLOPT_TIMEOUT_MS cURL 関数の実行にかけられる最大のミリ秒数。 システムの標準の名前解決を使うように libcurl をビルドしている場合は、 接続のタイムアウトは秒単位の精度となり、最小のタイムアウトは 1 秒となります。 cURL 7.16.2 で追加されました。
CURLOPT_TIMEVALUE 1970 年 1 月 1 日からの経過秒数。この値は CURLOPT_TIMECONDITION で使用されます。
CURLOPT_TIMEVALUE_LARGE 1970年1月1日からの経過時刻を秒単位で示します。 この値は CURLOPT_TIMECONDITION によって使われます。 デフォルトは0です。 このオプションと CURLOPT_TIMEVALUE の違いは引数の型です。 'long' が 32ビット長しかないシステムでは、 2038年以降の日付を設定するためにこのオプションを使わなければいけません。 cURL 7.59.0 で追加されました。PHP 7.3.0 以降で使用可能です。
CURLOPT_UPKEEP_INTERVAL_MS プロトコルによっては、 "connection upkeep" (接続を維持する) 仕組みを備えているものがあります。 通常、この仕組みは接続を維持するため、既存の接続に対して少量のトラフィックを送信します。 このオプションは、接続を維持するためのトラフィックを送信する間隔を指定します。 こうした接続を維持する仕組みは、現状 HTTP/2 の接続でのみ利用できます。 この接続を維持するための間隔を超えた場合、HTTP/2 PING フレームが送信されます。デフォルトは 60 秒です。
CURLOPT_UPLOAD_BUFFERSIZE cURL のアップロードバッファの好ましいサイズを、 バイト単位で指定します。 アップロードのバッファサイズは、デフォルトでは 64キロバイトです。 バッファサイズの最大値は、2メガバイトになっています。 バッファサイズの最小値は、16キロバイトになっています。
CURLOPT_MAX_RECV_SPEED_LARGE ダウンロード速度 (単位は「バイト/秒」) の転送中累加平均がこの値を超えると、 転送を一時停止して、平均速度がこのパラメータの値以下に落ちるまで待ちます。 デフォルトは無制限です。 cURL 7.15.5 で追加されました。
CURLOPT_MAX_SEND_SPEED_LARGE アップロード速度 (単位は「バイト/秒」) の転送中累加平均がこの値を超えると、 転送を一時停止して、平均速度がこのパラメータの値以下に落ちるまで待ちます。 デフォルトは無制限です。 cURL 7.15.5 で追加されました。
CURLOPT_SSH_AUTH_TYPES CURLSSH_AUTH_PUBLICKEY, CURLSSH_AUTH_PASSWORD, CURLSSH_AUTH_HOST, CURLSSH_AUTH_KEYBOARD のビットマスク。 CURLSSH_AUTH_ANY にすると libcurl がいずれかひとつを選択します。 cURL 7.16.1 で追加されました。
CURLOPT_IPRESOLVE ホスト名の解決にどの形式の IP アドレスを使うのかを、アプリケーションが選べるようにします。 複数のバージョンの IP アドレスで解決できるホスト名のときに使うもので、指定できる値は CURL_IPRESOLVE_WHATEVERCURL_IPRESOLVE_V4 そして CURL_IPRESOLVE_V6 です。 デフォルトは CURL_IPRESOLVE_WHATEVER です。 cURL 7.10.8 で追加されました。
CURLOPT_FTP_FILEMETHOD FTP(S) サーバー上のファイルに到達するために使う方法を curl に伝えます。利用可能な値は CURLFTPMETHOD_DEFAULTCURLFTPMETHOD_MULTICWDCURLFTPMETHOD_NOCWD および CURLFTPMETHOD_SINGLECWD です。 cURL 7.15.1 で追加されました。

value は、 option パラメータの 以下の値に関して文字列である必要があります。

オプション value への設定値 注記
CURLOPT_ABSTRACT_UNIX_SOCKET ホストにTCP接続する代わりに、抽象化されたUnixドメインソケットの使用を有効にし、 パスを指定された string に設定します。 このオプションは CURLOPT_UNIX_SOCKET_PATH と同じセマンティクスを共有しています。 これらのふたつのオプションは同じストレージを共有するので、 ハンドルごとにそれらのうちのひとつだけを設定できます。 cURL 7.53.0 で追加されました。PHP 7.3.0 以降で利用可能です。
CURLOPT_ALTSVC Alt-Svc キャッシュとして使うファイル名を cURL に指定します。 これは既存のキャッシュコンテンツを読み取る目的で使います。 また、通信が完了した後に書き込む可能性があります。 書き込むのは、CURLALTSVC_READONLYFILECURLOPT_ALTSVC_CTRL 経由で設定されていない場合に限ります。
CURLOPT_ALTSVC_CTRL このハンドルを使って転送する際に、Alt-Svc をどう扱うかを cURL に指示するために、有効な機能をまとめてビットマスクで指定します。 cURL は Alt-Svc ヘッダを HTTPS の場合にのみ受け入れます。 origin が HTTPS で適切にホストされている場合にのみ、cURL は別のオリジンへのリクエストも完了できます。 以下のいずれかのビットを設定すると、Alt-Svc エンジンは有効になります。 オプションは以下のとおりです: CURLALTSVC_H1, CURLALTSVC_H2, CURLALTSVC_H3 および CURLALTSVC_READONLYFILE
CURLOPT_AWS_SIGV4

AWS V4 signature authentication を、HTTP(S) ヘッダで指定します。

このオプションは、CURLOPT_HTTPAUTH で設定されている他のあらゆる認証タイプを上書きします。 このメソッドは、他の認証タイプと組み合わせることができません。

CURLOPT_CAINFO 接続先を検証するための証明書を保持するファイル名。 これは CURLOPT_SSL_VERIFYPEER を使用する場合に のみ意味を持ちます。 絶対パスで指定しなければならないでしょう。
CURLOPT_CAINFO_BLOB 接続先を検証するための、ひとつ以上の証明書保持するPEMファイルの名前。 このオプションは、CURLOPT_CAINFO を上書きします。 PHP 8.2.0 と、cURL 7.77.0 以降で利用可能です。
CURLOPT_CAPATH 複数の証明書ファイルを保持するディレクトリ。このオプションは CURLOPT_SSL_VERIFYPEER とともに使用します。
CURLOPT_COOKIE HTTP リクエストにおける "Cookie: " ヘッダの内容。 クッキーが複数ある場合は、セミコロンとスペースで区切られる (例 "fruit=apple; colour=red") ことに注意しましょう。
CURLOPT_COOKIEFILE クッキーのデータを保持するファイルの名前。クッキーファイルは、 Netscape フォーマットあるいは HTTP ヘッダを単純にファイルにダンプしたものが使用可能です。 名前が空文字列の場合はクッキーを読み込みませんが、クッキーの処理は有効なままです。
CURLOPT_COOKIEJAR ハンドルのデストラクタがコールされた際に、 すべての内部クッキーを保存するファイルの名前。
警告

PHP 8.0.0 以降では、curl_close をコールしても何もしなくなり、ハンドルを破棄しなくなりました。 ハンドルが自動で破棄される前にクッキーを書き込みたい場合、 ハンドルに対して unset をコールします。

CURLOPT_COOKIELIST 内部的な Cookie ストアに追加するCookie文字列(つまり、NetScape/Mozilla フォーマット または HTTP形式の Set-Cookieヘッダ)。 "ALL" の場合、メモリに保持している全てのクッキーを削除します。 "SESS" の場合、メモリに保持している全てのセッションクッキーを削除します。 "FLUSH" の場合、CURLOPT_COOKIEJAR で指定されたファイルに全ての既知の Cooie を書き込みます。 "RELOAD" の場合、CURLOPT_COOKIEFILE で指定されたファイルから全てのクッキーを読み込みます。 cURL 7.14.1 以降で利用可能です。
CURLOPT_CUSTOMREQUEST

HTTP リクエストで "GET" あるいは "HEAD" 以外に 使用するカスタムメソッド。これが有用なのは、"DELETE" やその他のあまり知られていない HTTP リクエストを実行する場合です。 使用可能な値は "GET""POST""CONNECT" などです。 HTTP リクエストの内容をすべて指定するわけではありません。つまり、 "GET /index.html HTTP/1.0\r\n\r\n" のような 記述は間違いだということです。

注意:

使用しようとしているメソッドをサーバーがサポートしていることを 確かめるまで、これを使用しないでください。

CURLOPT_DEFAULT_PROTOCOL

URL にスキーム名がなかった場合のデフォルトのプロトコル

cURL 7.45.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_DNS_INTERFACE

DNS リゾルバがバインドするべきネットワークインターフェイス名を設定します。 これは、(アドレスではなく)インターフェイス名でなければなりません。

cURL 7.33.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_DNS_LOCAL_IP4

リゾルバがバインドするべきローカルの IPv4 アドレスを設定します。 この値は、数値の IPv4 アドレスを文字列で含めるべきです。

cURL 7.33.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_DNS_LOCAL_IP6

リゾルバがバインドするべきローカルの IPv6 アドレスを設定します。 この値は、数値の IPv6 アドレスを文字列で含めるべきです。

cURL 7.33.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_EGDSOCKET CURLOPT_RANDOM_FILE と似ていますが、 Entropy Gathering Daemon ソケットを使用してファイル名を生成する点が 違います。
CURLOPT_ENCODING "Accept-Encoding: " ヘッダの内容。 これにより、応答のデコードを可能にします。サポートされる エンコーディングは "identity""deflate" および "gzip" です。もし空文字列 "" が指定された場合、 サポートされるエンコーディングをすべて含むヘッダが送信されます。 cURL 7.10 で追加されました。
CURLOPT_FTPPORT FTP で "PORT" を使用するための IP アドレスを取得する際に使用される値。 "PORT" は、リモートサーバーに対してこちらが指定した IP アドレスに 接続するよう指示します。この値に設定できる内容は IP アドレス、ホスト名、 ネットワークインターフェイス名(Unix)、あるいは単に '-' を指定する ことでシステムのデフォルト IP アドレスを指定します。
CURLOPT_HSTS

HSTS (HTTP Strict Transport Security) が用いるキャッシュファイル名

CURLOPT_HSTS_CTRL

HSTS (HTTP Strict Transport Security) の振る舞いを制御します。 このハンドルを使って転送する際に、HSTS をどう扱うかを cURL に指示するために、有効な機能をまとめてビットマスクで指定します。 CURLHSTS_ENABLE を使うと、インメモリのキャッシュが有効になります。 HSTS のキャッシュファイルが指定されると、 CURLHSTS_READONLYFILE を使うことで、ファイルを読み取り専用にできます。

CURLOPT_INTERFACE 使用するネットワークインターフェイスの名前。 インターフェイス名、IP アドレスあるいはホスト名が指定可能です。
CURLOPT_KEYPASSWD CURLOPT_SSLKEY あるいは CURLOPT_SSH_PRIVATE_KEYFILE 秘密鍵を使うときに必須となるパスワード。 cURL 7.16.1 で追加されました。
CURLOPT_KRB4LEVEL KRB4(Kerberos 4)セキュリティレベル。以下の値のいずれか (セキュリティの低い順です)が指定可能です。 "clear""safe""confidential""private"。 文字列がこれらのどれでもなかった場合は、 "private" が使用されます。このオプションを null にすると KRB4 セキュリティを無効にします。現時点では、KRB4 セキュリティは FTP 転送にのみ使用可能です。
CURLOPT_LOGIN_OPTIONS プロトコル特有のログインオプションを設定するために使えます。 たとえば好ましい認証メカニズムが "AUTH=NTLM" とか "AUTH=*" の場合で、 CURLOPT_USERNAME オプションと組み合わせて使うべき場合です。 cURL 7.34.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_PINNEDPUBLICKEY ピン止めされた公開鍵を設定します。 ピン止めされた公開鍵のファイル名ファイル名を文字列として指定できます。 期待されているファイルフォーマットは "PEM" または "DER" 形式です。 文字列は、 base64 エンコードされた sha256 ハッシュで、 "sha256//" が先頭に付いたものです。これを任意の数だけ指定でき、 ";" で区切られます。 cURL 7.39.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_POSTFIELDS HTTP "POST" で送信するすべてのデータ。 このパラメータは 'para1=val1&para2=val2&...' のように url エンコードされた文字列形式で渡すこともできますし、 フィールド名をキー、データを値とする配列で渡すこともできます。 value が配列の場合、 Content-Type ヘッダには multipart/form-data を設定します。 ファイルは CURLFile または CURLStringFile を使って送信することが出来ます。 この場合、value は配列でなければなりません。
CURLOPT_PRIVATE この cURL ハンドルに関連づけるデータ。ここで関連づけたデータは、 curl_getinfoCURLINFO_PRIVATE オプションで取得できます。 cURL はデータを一切加工しません。 cURL マルチハンドルを使う場合は一般的に、この値が cURL ハンドルを特定する一意なキーとなります。 cURL 7.10.3 で追加されました。
CURLOPT_PRE_PROXY CURLOPT_PROXY で指定された HTTP(S) プロキシにcurlが接続する前に、 事前に接続する preproxy を設定します。 この値には、ホスト名またはドットで区切られた数値のIPアドレスを設定します。 preproxy は SOCKS プロキシだけがなることができ、 どの socks を使うかを指定するために [scheme]:// を先頭に付けます。 数値の IPv6 アドレスは 角括弧 "[]" 内に書かなければいけません。 preproxy にから文字列を設定すると、明示的に preproxy を無効にできます。 この文字列にポート番号を設定するには、 ホスト名の最後に :[port] を追加します。 プロキシのポート番号は別のオプション CURLOPT_PROXYPORT で指定しても構いません。ポート番号を指定しない場合は、 デフォルトでは 1080 を使います。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY リクエストを経由させる HTTP プロキシ。
CURLOPT_PROXY_SERVICE_NAME プロキシ認証サービス名 HTTP プロキシについては、cURL 7.43.0 で追加されました。 SOCKS5 プロキシについては、cURL 7.49.0 で追加されました。 PHP 7.0.7 以降で利用可能です。
CURLOPT_PROXY_CAINFO プロキシの Certificate Authority (CA) バンドルのパスを指定します。 HTTPS プロキシを検証するための証明書をひとつ以上持つ、ファイルの名前を文字列で設定します。 このオプションは HTTPS プロキシに接続するためのものであって、 HTTPS サーバーに接続するためのものではありません。 デフォルトは、libcurl が cacert バンドルを保存していると想定しているシステムパスに設定されています。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_CAINFO_BLOB HTTPS プロキシを検証するための証明書をひとつ以上持つ、PEMファイルの名前を設定します。 このオプションは HTTPS プロキシに接続するためのものであって、 HTTPS サーバーに接続するためのものではありません。 デフォルトは、libcurl が cacert バンドルを保存していると想定しているシステムパスに設定されています。 PHP 8.2.0 以降および、cURL >= 7.77.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_CAPATH HTTPSプロキシを検証するための複数のCA証明書が置かれたディレクトリ。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_CRLFILE PEMフォーマットの CRL (Certificate Revocation List, 証明書失効リスト) を連結したファイル名を設定します。 これはSSL通信の際に行われる証明書の検証に使います。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_KEYPASSWD CURLOPT_PROXY_SSLKEY で設定する秘密鍵で使う、 必須のパスワードを設定します。 証明書を読み込むのにパスフレーズは不要ですが、 秘密鍵を読み込むにはパスフレーズが必要です。 このオプションはHTTPSプロキシに接続するために必要です。 HTTPSサーバーに接続するためのものではありません。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_PINNEDPUBLICKEY HTTPSプロキシ向けの pinned public key を設定します。 pinned public key のファイル名を文字列で設定できます。 ファイルフォーマットは "PEM" または "DER" です。 base64 エンコードされた sha256 ハッシュ を任意の数だけ "sha256//" の後に続けることもできます。このハッシュは ";" で区切ります。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_SSLCERT HTTPSプロキシに接続する時に使うクライアント証明書のフォーマット。 デフォルトは Secure Transport の場合 "P12" で、 それ以外のエンジンでは "PEM" ですが、 CURLOPT_PROXY_SSLCERTTYPE でも変更できます。 NSS や Secure transport では、 セキュリティデータベースで名付けられた証明書のニックネームも設定できます。 現在のディレクトリにあるファイルを使いたい場合は、 ニックネームとの混乱を避けるため "./" をプレフィックスとして付けてください。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_SSLCERTTYPE HTTPSプロキシに接続する時に使うクライアント証明書のフォーマット。 サポートされているのは "PEM" と "DER" ですが、 Secure Transport はこれらをサポートしていません。 OpenSSL (0.9.3 以降) と Secure Transport (iOS 5 以降, または OS X 10.7 以降) では PKCS#12-encoded ファイル向けに "P12" もサポートしています。デフォルトは "PEM" です。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_SSL_CIPHER_LIST HTTPSプロキシと接続を確立するために使う暗号スイートの一覧。 この一覧はひとつ以上の暗号スイートの文字列がコロンで区切られており、 構文的に正しくなければなりません。 コンマやスペースも区切り文字としては有効ですが、通常はコロンが使われます。 !, - および + が演算子として使えます。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_TLS13_CIPHERS TLS 1.3 接続をプロキシと確立するために使う暗号スイートの一覧。 この一覧はひとつ以上の暗号スイートの文字列がコロンで区切られており、 構文的に正しくなければなりません。 現状、このオプションはcurlが OpenSSL 1.1.1 以降とビルドされた時にだけ使われています。 OpenSSL 以外のSSLバックエンドを使っている場合は、 CURLOPT_PROXY_SSL_CIPHER_LIST オプションを使って TLS 1.3 の暗号スイートを設定できます。 PHP 7.3.0 以降 および cURL >= 7.61.0 と OpenSSL >= 1.1.1 をビルドした場合に使用可能です。
CURLOPT_PROXY_SSLKEY HTTPSプロキシに接続するのに使う秘密鍵のファイル名。 デフォルトのフォーマットは "PEM" で、 そのフォーマットは CURLOPT_PROXY_SSLKEYTYPE で変更できます。 (iOS と Mac OS X のみ) Secure Transport を使って curl がビルドされている場合、 このオプションは無視されます。 PHP 7.3.0 以降 および cURL >= 7.61.0 をビルドした場合、 かつ TLS が有効な場合にのみ使用可能です。
CURLOPT_PROXY_SSLKEYTYPE 秘密鍵のフォーマット。"PEM", "DER" および "ENG" がサポートされています。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_TLSAUTH_PASSWORD CURLOPT_PROXY_TLSAUTH_TYPE オプションで指定したTLS認証メソッド で使うパスワード。 CURLOPT_PROXY_TLSAUTH_USERNAME オプションも設定する必要があります。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_TLSAUTH_TYPE HTTPS接続で使うTLS認証メソッド。 "SRP" がサポートされています。

注意:

TLS の Secure Remote Password (SRP) 認証は、 ローカルとリモートの双方が共通のシークレットを持っている場合に、 お互いを認証する方法を提供します。 TLS-SRP を使うためには、 CURLOPT_PROXY_TLSAUTH_USERNAMECURLOPT_PROXY_TLSAUTH_PASSWORD オプションも設定する必要があります。

PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXY_TLSAUTH_USERNAME CURLOPT_PROXY_TLSAUTH_TYPE オプションで指定された HTTPSプロキシのTLS認証メソッドで使うユーザー名。 CURLOPT_PROXY_TLSAUTH_PASSWORD オプションも設定する必要があります。 PHP 7.3.0 以降 および cURL >= 7.52.0 をビルドした場合に使用可能です。
CURLOPT_PROXYUSERPWD プロキシに接続するためのユーザー名とパスワード。 "[username]:[password]" 形式で指定します。
CURLOPT_RANDOM_FILE 使用するファイル名を、SSL の乱数生成器を使用して作成します。
CURLOPT_RANGE 取得するデータの範囲を "X-Y" 形式で指定します。X あるいは Y は省略可能です。 HTTP 転送では、いくつかの範囲をカンマで区切った "X-Y,N-M" のような形式もサポートしています。
CURLOPT_REFERER HTTP リクエストで使用される "Referer: " ヘッダの内容。
CURLOPT_SASL_AUTHZID 通信に用いる authorization identity (authzid) を指定します。 PLAIN SASL 認証メカニズムの場合にのみ適用できますが、これはオプションです。 指定されない場合は、 ユーザー名のみを指定した authentication identity(authcid) のみを、パスワードと一緒にサーバーに送信します。 サーバーは authzid が指定されない場合、authcid から authzid を導出し、内部的に用います。
CURLOPT_SERVICE_NAME 認証サービス名 cURL 7.43.0 で追加されました。PHP 7.0.7 以降で利用可能です。
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 32 桁の十六進文字列。この文字列は、リモートホストの公開鍵の MD5 チェックサムでなければなりません。 md5sum がマッチしない限り、libcurl はホストとの接続を拒否します。 このオプションは、SCP および SFTP でのみ有効です。 cURL 7.17.1 で追加されました。
CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 リモートホストの公開鍵を、Base64 エンコードされた SHA256 ハッシュ形式で指定します。 指定されたハッシュがリモートホストが提供するそれと一致しない場合、 通信は失敗します。
CURLOPT_SSH_PUBLIC_KEYFILE 公開鍵のファイル名。指定しなかった場合、libcurl はデフォルトの場所を探します。デフォルトは、 環境変数 HOME が設定されていれば $HOME/.ssh/id_dsa.pub、設定されていなければ カレントディレクトリの "id_dsa.pub" です。 cURL 7.16.1 で追加されました。
CURLOPT_SSH_PRIVATE_KEYFILE 秘密鍵のファイル名。指定しなかった場合、libcurl はデフォルトの場所を探します。デフォルトは、 環境変数 HOME が設定されていれば $HOME/.ssh/id_dsa、設定されていなければ カレントディレクトリの "id_dsa" です。 ファイルがパスワードで保護されている場合は、パスワードを CURLOPT_KEYPASSWD に設定します。 cURL 7.16.1 で追加されました。
CURLOPT_SSL_CIPHER_LIST SSL で使用する暗号のリスト。例えば RC4-SHA および TLSv1 が 使用可能です。
CURLOPT_SSL_EC_CURVES 楕円曲線暗号のアルゴリズムの一覧を、コロンで区切って指定します。 たとえば、X25519:P-521 は、 有効な楕円曲線暗号の一覧です。 このオプションは、 cURL のSSLバックエンドがそのサポートを用いるようにビルドされている場合に、 SSL ハンドシェイクで使われるクライアントの鍵交換アルゴリズムを定義します。
CURLOPT_SSLCERT PEM フォーマットの証明書を含むファイルの名前。
CURLOPT_SSLCERTPASSWD CURLOPT_SSLCERT 証明書を使用する際に必要なパスワード。
CURLOPT_SSLCERTTYPE 証明書の形式。サポートされるフォーマットは "PEM"(デフォルト)、"DER" および "ENG" です。 OpenSSL 0.9.3 以降では、 "P12" (PKCS#12 でエンコードされたファイル) もサポートしています。 cURL 7.9.3 で追加されました。
CURLOPT_SSLENGINE CURLOPT_SSLKEY で指定した SSL 秘密鍵の 暗号化エンジンの ID 。
CURLOPT_SSLENGINE_DEFAULT 非対称暗号化で使用する暗号化エンジンの ID 。
CURLOPT_SSLKEY SSL 秘密鍵を含むファイルの名前。
CURLOPT_SSLKEYPASSWD

CURLOPT_SSLKEY で指定した SSL 秘密鍵を 使用するために必要なパスワード。

注意:

このオプションには重要なパスワードが含まれます。PHP スクリプトを 安全な状態におくことを忘れないでください。

CURLOPT_SSLKEYTYPE CURLOPT_SSLKEY で指定した SSL 秘密鍵の 形式。サポートされる型は以下のとおりです。 "PEM"(デフォルト)、"DER" および "ENG"
CURLOPT_TLS13_CIPHERS TLS 1.3 接続を確立するために使う暗号スイートの一覧。 この一覧はひとつ以上の暗号スイートの文字列がコロンで区切られており、 構文的に正しくなければなりません。 このオプションは現状、OpenSSL 1.1.1 以降でcurlがビルドされている場合にだけ使われています。 他のSSLバックエンドを使っている場合、 CURLOPT_SSL_CIPHER_LIST を使うと TLS 1.3 の暗号スイートを設定できます。 PHP 7.3.0 以降 および cURL >= 7.61.0 と OpenSSL >= 1.1.1 をビルドした場合に使用可能です。
CURLOPT_UNIX_SOCKET_PATH 接続のエンドポイントとして Unixドメインソケットの利用を有効にし、 ドメインソケットのパスを与えられた string として設定します。 cURL 7.40.0 で追加されました。 PHP 7.0.7 以降で利用可能です。
CURLOPT_URL 取得する URL 。curl_init でセッションを 初期化する際に指定することも可能です。
CURLOPT_USERAGENT HTTP リクエストで使用される "User-Agent: " ヘッダの内容。
CURLOPT_USERNAME 認証に使うユーザー名 cURL 7.19.1 で追加されました。
CURLOPT_PASSWORD 認証に使うパスワード cURL 7.19.1 で追加されました。
CURLOPT_USERPWD 接続に使用するユーザー名とパスワード。 "[username]:[password]" 形式で指定します。
CURLOPT_XOAUTH2_BEARER OAuth 2.0 のアクセストークンを指定します。 cURL 7.33.0 で追加されました。PHP 7.0.7 以降で利用可能です。

value には、 option の以下の値に関して 配列を指定する必要があります。

オプション value への設定値 注記
CURLOPT_CONNECT_TO URL で指定されたホストとポートのかわりに接続する、 特定のホストとポート。 HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT というフォーマット文字列の配列を受け入れます。 cURL 7.49.0 で追加されました。 PHP 7.0.7 以降で利用可能です。
CURLOPT_HTTP200ALIASES エラーではなく正常な応答として扱われる、HTTP 200 レスポンスの配列。 cURL 7.10.3 で追加されました。
CURLOPT_HTTPHEADER 設定する HTTP ヘッダフィールドの配列。 array('Content-type: text/plain', 'Content-length: 100') 形式。
CURLOPT_POSTQUOTE FTP リクエストの実行後に、サーバー上で実行する FTP コマンドの配列。
CURLOPT_PROXYHEADER プロキシに渡すカスタムHTTPヘッダの配列 cURL 7.37.0 で追加されました。 PHP 7.0.7 以降で利用可能です。
CURLOPT_QUOTE FTP リクエストの前にサーバー上で実行する FTP コマンドの配列。
CURLOPT_RESOLVE 特定のホストとポートのペアのための、カスタムアドレスを指定します。 ホスト名、ポート、そして IP アドレスの文字列の配列です。 それぞれの要素はコロンで区切る必要があります。 以下のようなフォーマットになります: array("example.com:80:127.0.0.1") cURL 7.21.3 で追加されました。

value はストリームリソース(例えば fopen が作成するもの)であり、以下の option パラメータに設定します。

オプション value に設定する内容
CURLOPT_FILE 転送内容が書き込まれるファイル。デフォルトは STDOUT (ブラウザウィンドウ)。
CURLOPT_INFILE アップロード時に転送内容を読み込むファイル。
CURLOPT_STDERR STDERR の代わりにエラーを出力する場所。
CURLOPT_WRITEHEADER 転送のヘッダ部分が書き込まれるファイル。  

value には、 option の以下の値に関して 有効な関数あるいはクロージャの名前を指定する必要があります。

オプション value への設定値 備考
CURLOPT_HEADERFUNCTION 二つのパラメータをとるコールバック。 最初のパラメータは CURL リソースで、2 番目は書き込む ヘッダデータの文字列です。このコールバック関数を使用するにあたり、 ヘッダデータを書き込む処理を実装するのはあなたの役目となります。 書き込んだデータのバイト数を返します。
CURLOPT_PASSWDFUNCTION 三つのパラメータをとるコールバック。 最初のパラメータは CURL リソースで、2 番目はパスワード プロンプトの文字列、そして 3 番目はパスワードの最大長です。 入力されたパスワードを文字列で返します。 PHP 7.3.0 で削除されました。
CURLOPT_PROGRESSFUNCTION

五つのパラメータをとるコールバック。 最初のパラメータは cURL 利ソールで、2 番目はこの転送でダウンロードしようとしている総バイト数、 3 番目はこれまでにダウンロードしたバイト数、4 番目はこの転送でアップロードしようとしている総バイト数、 そして 5 番目はこれまでにアップロードしたバイト数です。

注意:

このコールバックが呼ばれるのは、CURLOPT_NOPROGRESSfalse の場合だけです。

ゼロ以外の値を返すと、転送を強制終了できます。このとき、この転送にはエラー CURLE_ABORTED_BY_CALLBACK が設定されます。

 
CURLOPT_READFUNCTION 三つのパラメータをとるコールバック。 最初のパラメータは CURL リソースで、2 番目は CURLOPT_INFILE で cURL に渡したストリームリソース、 そして最後が読み込むデータの最大量です。 コールバックは、要求したデータ量以下の長さの文字列を返さなければなりません。 一般的には、渡されたストリームリソースから読み込んだデータを返します。 EOF を伝えるには空文字列を返さなければなりません。  
CURLOPT_WRITEFUNCTION 二つのパラメータをとるコールバック。 最初のパラメータは CURL リソースで、2 番目は書き込む データの文字列です。データの保存には、 このコールバック関数を使わなければなりません。 書き込んだデータの正確なバイト数を返す必要があります。 返さなければ、エラーで転送が異常終了します。  
CURLOPT_XFERINFOFUNCTION 二つのパラメータをとるコールバック。 CURLOPT_PROGRESSFUNCTION と目的は似ていますが、 cURL の観点からはこちらの方がモダンで、好ましいオプションです。 cURL 7.32.0 で追加されました。 PHP 8.2.0 以降で利用可能です。

その他の値

オプション value への設定値
CURLOPT_SHARE curl_share_init の結果。 この cURL ハンドルに、共有ハンドルからのデータを使わせるようにします。

戻り値

成功した場合に true を、失敗した場合に false を返します。

変更履歴

バージョン 説明
8.0.0 handleCurlHandle クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、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);

// cURL リソースを閉じ、システムリソースを開放します
curl_close($ch);
?>

注意

注意:

配列を CURLOPT_POSTFIELDS に渡すと、データを multipart/form-data でエンコードします。 一方 URL エンコードされた文字列を渡すと、データを application/x-www-form-urlencoded でエンコードします。

参考

  • curl_setopt_array
  • CURLFile
  • CURLStringFile