curl_setopt

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

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

説明

curl_setopt ( resource $ch , int $option , mixed $value ) : bool

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

パラメータ

ch

curl_init() が返す cURL ハンドル。

option

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

value

option に設定する値。

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

オプション value への設定値 注記
CURLOPT_AUTOREFERER TRUE を設定すると、Location: によるリダイレクトを たどる際には自動的に Referer: フィールドをリクエストに 追加します。
CURLOPT_BINARYTRANSFER TRUE を設定すると、CURLOPT_RETURNTRANSFER が使用された場合に出力結果を何も加工せずに返します。 PHP 5.1.3 以降では、このオプションは何の効果もありません。 CURLOPT_RETURNTRANSFER を使ったときには 常に出力をそのまま返すようになりました。
CURLOPT_COOKIESESSION TRUE を設定すると、クッキーの "セッション" を新しく開始します。 以前のセッションで読み込まれていた "セッションクッキー" は無視するよう、 libcurl に指示します。デフォルトでは、それがセッションクッキーであるか どうかにかかわらず libcurl はすべてのクッキーを読み込んで保存します。 セッションクッキーとは、有効期限が指定されておらず "セッション" の間のみ 有効であるクッキーのことです。
CURLOPT_CERTINFO TRUE を設定すると、セキュアな転送時に SSL 証明書の情報を STDERR に出力します。 cURL 7.19.1 で追加されました。 PHP 5.3.2 以降で使用可能です。これを使うには、CURLOPT_VERBOSE を on にしておかなければなりません。
CURLOPT_CONNECT_ONLY TRUE を設定すると、プロキシの認証や接続の確立などをすべて行いますが、データは転送しません。 このオプションは、HTTP や SMTP そして POP3 用に実装されています。 7.15.2 で追加されました。 PHP 5.5.0 以降で使用可能です。
CURLOPT_CRLF TRUE を設定すると、転送時に Unix 形式の改行を CRLF 形式に変換します。
CURLOPT_DNS_USE_GLOBAL_CACHE TRUE を設定すると、グローバル DNS キャッシュを利用します。 このオプションはスレッドセーフではありません。また、デフォルトで 有効になっています。
CURLOPT_FAILONERROR TRUE を設定すると、HTTP で 400 以上のコードが返ってきた際に 処理失敗と判断します。デフォルトでは、コードの値を無視して ページの内容を取得します。
CURLOPT_SSL_FALSESTART TRUE にすると、TLS false start を有効にします。 cURL 7.42.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_FILETIME TRUE を設定すると、ドキュメントの更新日時を取得しようと試みます。 この値を取得するには、curl_getinfo()CURLINFO_FILETIME オプションを用います。
CURLOPT_FOLLOWLOCATION TRUE を設定すると、サーバーが HTTP ヘッダの一部として送ってくる "Location: " ヘッダの内容をたどります (これは再帰的に行われます。CURLOPT_MAXREDIRS が指定されていない限り、送ってくる "Location: " ヘッダの内容をずっとたどり続けることに注意しましょう)。
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 アルゴリズムを解除します。解除すると、小さなパケットがネットワーク上を流れる回数をできるだけ減らそうと試みます。 PHP 5.2.1 以降のバージョンで、libcurl 7.11.2 以降と組み合わせてコンパイルしたときに利用可能です。
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT のエイリアスです。
CURLOPT_FTPLISTONLY TRUE を設定すると、FTP でディレクトリ名のみ表示します。
CURLOPT_HEADER TRUE を設定すると、ヘッダの内容も出力します。
CURLINFO_HEADER_OUT TRUE を設定すると、リクエスト文字列を追跡します。 PHP 5.1.3 以降で使用可能です。プレフィックスが CURLINFO_ となっているのは意図的なものです。
CURLOPT_HTTPGET TRUE を設定すると、HTTP のリクエスト形式を GET に戻します。 GET はデフォルト設定なので、リクエスト形式が変更されている 場合にのみ必要となります。
CURLOPT_HTTPPROXYTUNNEL TRUE にすると、指定された HTTP プロキシを介してトンネルします。
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_SAFE_UPLOAD TRUE にすると、CURLOPT_POSTFIELDS でのファイルアップロードの際の @ プレフィックスを無効にします。 つまり、@ で始まる値を安全に渡せるようになるということです。 アップロードには CURLFile が使われるでしょう。 PHP 5.5.0 で追加され、デフォルトは FALSE でした。 PHP 5.6.0 以降は、デフォルトが TRUE に変わります。
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_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_CLOSEPOLICY CURLCLOSEPOLICY_* のいずれかの値。

注意:

このオプションは非推奨となりました。cURL で実装されることがなく、指定しても何の効果もありませんでした。

PHP 5.6.0 で削除されました。
CURLOPT_CONNECTTIMEOUT 接続の試行を待ち続ける秒数。0 は永遠に待ち続けることを意味します。
CURLOPT_CONNECTTIMEOUT_MS 接続の試行を待ち続けるミリ秒数。0 は永遠に待ち続けることを意味します。 システムの標準の名前解決を使うように libcurl をビルドしている場合は、 接続のタイムアウトは秒単位の精度となり、最小のタイムアウトは 1 秒となります。 cURL 7.16.2 で追加されました。PHP 5.2.3 以降で使用可能です。
CURLOPT_DNS_CACHE_TIMEOUT DNS エントリをメモリ内に保持し続ける秒数。デフォルトでは 120(2 分)に設定されています。
CURLOPT_EXPECT_100_TIMEOUT_MS 期待するタイムアウト。連続100リクエストの時間をミリ秒で指定します。 デフォルトは1000ミリ秒です。 cURL 7.36.0 で追加されました。PHP 7.0.7 以降で使用可能です。
CURLOPT_FTPSSLAUTH (使用可能な場合の)FTP 認証方法。 CURLFTPAUTH_SSL(まず SSL を試す)、 CURLFTPAUTH_TLS(まず TLS を試す)あるいは CURLFTPAUTH_DEFAULT(cURL が決める)のいずれかです。 cURL 7.12.2 で追加されました。
CURLOPT_HEADEROPT How to deal with headers. One of the following constants: CURLHEADER_UNIFIED: the headers specified in CURLOPT_HTTPHEADER will be used in requests both to servers and proxies. With this option enabled, CURLOPT_PROXYHEADER will not have any effect. CURLHEADER_SEPARATE: makes CURLOPT_HTTPHEADER headers only get sent to a server and not to a proxy. Proxy headers must be set with CURLOPT_PROXYHEADER to get used. Note that if a non-CONNECT request is sent to a proxy, libcurl will send both server headers and proxy headers. When doing CONNECT, libcurl will send CURLOPT_PROXYHEADER headers only to the proxy and then CURLOPT_HTTPHEADER headers only to the server. Defaults to CURLHEADER_SEPARATE as of cURL 7.42.1, and CURLHEADER_UNIFIED before. Added in cURL 7.37.0. Available since 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 を使用する) のいずれかです。
CURLOPT_HTTPAUTH

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

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

CURLAUTH_ANYCURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM のエイリアスです。

CURLAUTH_ANYSAFECURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM のエイリアスです。

CURLOPT_INFILESIZE ファイルをリモートサイトにアップロードする際のファイルサイズ。 このオプションを指定しても、libcurl がそれ以上のデータを送信するのは止められないことに注意しましょう。 実際に何が送信されるのかは CURLOPT_READFUNCTION に依存します。
CURLOPT_LOW_SPEED_LIMIT 1 秒あたりのバイト数で、転送速度がこれより遅い期間が CURLOPT_LOW_SPEED_TIME 秒以上続いた場合に PHP は転送を終了します。
CURLOPT_LOW_SPEED_TIME 転送速度が CURLOPT_LOW_SPEED_LIMIT より遅い期間がどれだけ続いた場合に転送を異常終了させるかを、 秒単位で指定します。
CURLOPT_MAXCONNECTS 許可される持続的接続の最大数。もしこの値に達した場合、 どの接続を閉じるのかを CURLOPT_CLOSEPOLICY によって決定します。
CURLOPT_MAXREDIRS HTTP のリダイレクト先を追いかける最大値。 CURLOPT_FOLLOWLOCATION とあわせて使用します。
CURLOPT_PORT 接続先のポート番号。
CURLOPT_POSTREDIR CURLOPT_FOLLOWLOCATION が設定されているときに、 どの形式のリダイレクトの場合に HTTP POST メソッドを維持するのかを、 1 (301 Moved Permanently)、2 (302 Found)、4 (303 See Other) のビットマスクで指定します。 cURL 7.19.1 で追加されました。PHP 5.3.2 以降で使用可能です。
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_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_SSL_OPTIONS Set SSL behavior options, which is a bitmask of any of the following constants: CURLSSLOPT_ALLOW_BEAST: do not attempt to use any workarounds for a security flaw in the SSL3 and TLS1.0 protocols. CURLSSLOPT_NO_REVOKE: disable certificate revocation checks for those SSL backends where such behavior is present. Added in cURL 7.25.0. Available since PHP 7.0.7.
CURLOPT_SSL_VERIFYHOST 1 は SSL ピア証明書に一般名が存在するかどうかを調べます。 2 はそれに加え、その名前がホスト名と一致することを検証します。 本番環境では、このオプションの値は常に 2 (デフォルト値) にしておかなければなりません。 値 1 は、cURL 7.28.1 以降では使えなくなりました。
CURLOPT_SSLVERSION CURL_SSLVERSION_DEFAULT (0)、 CURL_SSLVERSION_TLSv1 (1)、 CURL_SSLVERSION_SSLv2 (2)、 CURL_SSLVERSION_SSLv3 (3)、 CURL_SSLVERSION_TLSv1_0 (4)、 CURL_SSLVERSION_TLSv1_1 (5)、 CURL_SSLVERSION_TLSv1_2 (6) のいずれかの値。

注意:

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

CURLOPT_STREAM_WEIGHT Set the numerical stream weight (a number between 1 and 256). Added in cURL 7.46.0. Available since PHP 7.0.7.
CURLOPT_TIMECONDITION CURLOPT_TIMEVALUE の扱いを決定します。 CURLOPT_TIMEVALUE で指定した時刻以降に 変更されたページのみを返す場合は CURL_TIMECOND_IFMODSINCE を使用します。 CURLOPT_HEADERTRUE だと仮定すると、 ページが変更されていない場合は "304 Not Modified" ヘッダが返されます。 CURL_TIMECOND_IFUNMODSINCE は反対の意味です。 デフォルトは CURL_TIMECOND_IFMODSINCE です。
CURLOPT_TIMEOUT cURL 関数の実行にかけられる時間の最大値。
CURLOPT_TIMEOUT_MS cURL 関数の実行にかけられる最大のミリ秒数。 システムの標準の名前解決を使うように libcurl をビルドしている場合は、 接続のタイムアウトは秒単位の精度となり、最小のタイムアウトは 1 秒となります。 cURL 7.16.2 で追加されました。PHP 5.2.3 以降で使用可能です。
CURLOPT_TIMEVALUE 1970 年 1 月 1 日からの経過秒数。この値は CURLOPT_TIMECONDITION で使用されます。デフォルトでは CURL_TIMECOND_IFMODSINCE が設定されます。
CURLOPT_MAX_RECV_SPEED_LARGE ダウンロード速度 (単位は「バイト/秒」) の転送中累加平均がこの値を超えると、 転送を一時停止して、平均速度がこのパラメータの値以下に落ちるまで待ちます。 デフォルトは無制限です。 cURL 7.15.5 で追加されました。PHP 5.4.0 以降で使用可能です。
CURLOPT_MAX_SEND_SPEED_LARGE アップロード速度 (単位は「バイト/秒」) の転送中累加平均がこの値を超えると、 転送を一時停止して、平均速度がこのパラメータの値以下に落ちるまで待ちます。 デフォルトは無制限です。 cURL 7.15.5 で追加されました。PHP 5.4.0 以降で使用可能です。
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_MULTICWDCURLFTPMETHOD_NOCWD および CURLFTPMETHOD_SINGLECWD です。 cURL 7.15.1 で追加されました。PHP 5.3.0 以降で使用可能です。

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

オプション value への設定値 注記
CURLOPT_CAINFO 接続先を検証するための証明書を保持するファイル名。 これは CURLOPT_SSL_VERIFYPEER を使用する場合に のみ意味を持ちます。 絶対パスで指定しなければならないでしょう。
CURLOPT_CAPATH 複数の証明書ファイルを保持するディレクトリ。このオプションは CURLOPT_SSL_VERIFYPEER とともに使用します。
CURLOPT_COOKIE HTTP リクエストにおける "Cookie: " ヘッダの内容。 クッキーが複数ある場合は、セミコロンとスペースで区切られる (例 "fruit=apple; colour=red") ことに注意しましょう。
CURLOPT_COOKIEFILE クッキーのデータを保持するファイルの名前。クッキーファイルは、 Netscape フォーマットあるいは HTTP ヘッダを単純にファイルにダンプしたものが使用可能です。 名前が空文字列の場合はクッキーを読み込みませんが、クッキーの処理は有効なままです。
CURLOPT_COOKIEJAR ハンドルを閉じる際 (curl_close のコール後など) に、 すべての内部クッキーを保存するファイルの名前。
CURLOPT_CUSTOMREQUEST HTTP リクエストで "GET" あるいは "HEAD" 以外に 使用するカスタムメソッド。これが有用なのは、"DELETE" やその他のあまり知られていない HTTP リクエストを実行する場合です。 使用可能な値は "GET""POST""CONNECT" などです。 HTTP リクエストの内容をすべて指定するわけではありません。つまり、 "GET /index.html HTTP/1.0\r\n\r\n" のような 記述は間違いだということです。

注意:

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

CURLOPT_DEFAULT_PROTOCOL

The default protocol to use if the URL is missing a scheme name.

Added in cURL 7.45.0. Available since PHP 7.0.7.
CURLOPT_DNS_INTERFACE

Set the name of the network interface that the DNS resolver should bind to. This must be an interface name (not an address).

Added in cURL 7.33.0. Available since PHP 7.0.7.
CURLOPT_DNS_LOCAL_IP4

Set the local IPv4 address that the resolver should bind to. The argument should contain a single numerical IPv4 address as a string.

Added in cURL 7.33.0. Available since PHP 7.0.7.
CURLOPT_DNS_LOCAL_IP6

Set the local IPv6 address that the resolver should bind to. The argument should contain a single numerical IPv6 address as a string.

Added in cURL 7.33.0. Available since 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_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 Can be used to set protocol specific login options, such as the preferred authentication mechanism via "AUTH=NTLM" or "AUTH=*", and should be used in conjunction with the CURLOPT_USERNAME option. Added in cURL 7.34.0. Available since PHP 7.0.7.
CURLOPT_PINNEDPUBLICKEY Set the pinned public key. The string can be the file name of your pinned public key. The file format expected is "PEM" or "DER". The string can also be any number of base64 encoded sha256 hashes preceded by "sha256//" and separated by ";". Added in cURL 7.39.0. Available since PHP 7.0.7.
CURLOPT_POSTFIELDS HTTP "POST" で送信するすべてのデータ。 ファイルを送信するには、ファイル名の先頭に @ をつけてフルパスを指定します。ファイルタイプを明示的に指定するには、ファイル名の後に ';type=mimetype' 形式で続けます。 このパラメータは 'para1=val1&para2=val2&...' のように url エンコードされた文字列形式で渡すこともできますし、 フィールド名をキー、データを値とする配列で渡すこともできます。 value が配列の場合、 Content-Type ヘッダには multipart/form-data を設定します。 PHP 5.2.0 以降、このオプションに @ プレフィックスつきでファイルを渡したときは value が配列でなければならなくなりました。 PHP 5.5.0 以降、@ プレフィックスは非推奨になりました。 また、ファイルを CURLFile で送信できるようになりました。 @ プレフィックスを無効化して、 @ で始まる値を安全に渡せるようにするには、 CURLOPT_SAFE_UPLOAD オプションを TRUE と設定します。
CURLOPT_PRIVATE この cURL ハンドルに関連づけるデータ。ここで関連づけたデータは、 curl_getinfo()CURLINFO_PRIVATE オプションで取得できます。 cURL はデータを一切加工しません。 cURL マルチハンドルを使う場合は一般的に、この値が cURL ハンドルを特定する一意なキーとなります。 cURL 7.10.3 で追加されました。
CURLOPT_PROXY リクエストを経由させる HTTP プロキシ。
CURLOPT_PROXY_SERVICE_NAME The proxy authentication service name. Added in cURL 7.34.0. Available since PHP 7.0.7.
CURLOPT_PROXYUSERPWD プロキシに接続するためのユーザー名とパスワード。 "[username]:[password]" 形式で指定します。
CURLOPT_RANDOM_FILE 使用するファイル名を、SSL の乱数生成器を使用して作成します。
CURLOPT_RANGE 取得するデータの範囲を "X-Y" 形式で指定します。X あるいは Y は省略可能です。 HTTP 転送では、いくつかの範囲をカンマで区切った "X-Y,N-M" のような形式もサポートしています。
CURLOPT_REFERER HTTP リクエストで使用される "Referer: " ヘッダの内容。
CURLOPT_SERVICE_NAME The authentication service name. Added in cURL 7.43.0. Available since PHP 7.0.7.
CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 32 桁の十六進文字列。この文字列は、リモートホストの公開鍵の MD5 チェックサムでなければなりません。 md5sum がマッチしない限り、libcurl はホストとの接続を拒否します。 このオプションは、SCP および SFTP でのみ有効です。 cURL 7.17.1 で追加されました。
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_SSLCERT PEM フォーマットの証明書を含むファイルの名前。
CURLOPT_SSLCERTPASSWD CURLOPT_SSLCERT 証明書を使用する際に必要なパスワード。
CURLOPT_SSLCERTTYPE 証明書の形式。サポートされるフォーマットは "PEM"(デフォルト)、"DER" および "ENG" です。 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_UNIX_SOCKET_PATH Enables the use of Unix domain sockets as connection endpoint and sets the path to the given string. Added in cURL 7.40.0. Available since PHP 7.0.7.
CURLOPT_URL 取得する URL 。curl_init() でセッションを 初期化する際に指定することも可能です。
CURLOPT_USERAGENT HTTP リクエストで使用される "User-Agent: " ヘッダの内容。
CURLOPT_USERNAME The user name to use in authentication. Added in cURL 7.19.1. Available since PHP 5.5.0.
CURLOPT_USERPWD 接続に使用するユーザー名とパスワード。 "[username]:[password]" 形式で指定します。
CURLOPT_XOAUTH2_BEARER Specifies the OAuth 2.0 access token. Added in cURL 7.33.0. Available since PHP 7.0.7.

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

オプション value への設定値 注記
CURLOPT_CONNECT_TO Connect to a specific host and port instead of the URL's host and port. Accepts an array of strings with the format HOST:PORT:CONNECT-TO-HOST:CONNECT-TO-PORT. Added in cURL 7.49.0. Available since 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 An array of custom HTTP headers to pass to proxies. Added in cURL 7.37.0. Available since PHP 7.0.7.
CURLOPT_QUOTE FTP リクエストの前にサーバー上で実行する FTP コマンドの配列。

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 番目はパスワードの最大長です。 入力されたパスワードを文字列で返します。
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 番目は書き込む データの文字列です。データの保存には、 このコールバック関数を使わなければなりません。 書き込んだデータの正確なバイト数を返す必要があります。 返さなければ、エラーで転送が異常終了します。

その他の値

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

返り値

成功した場合に TRUE を、失敗した場合に FALSE を返します。

変更履歴

バージョン 説明
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 が追加されました。
5.6.0 CURLOPT_SAFE_UPLOAD のデフォルトが TRUE になりました。
5.6.0 CURLOPT_CLOSEPOLICY およびそれに関連する値が削除されました。
5.5.0 cURL リソースを、 CURLOPT_PROGRESSFUNCTION コールバックの最初の引数として渡すようになりました。
5.5.0 CURLOPT_SHARE が追加されました。
5.3.0 CURLOPT_PROGRESSFUNCTION が追加されました。
5.2.10 CURLOPT_PROTOCOLS および CURLOPT_REDIR_PROTOCOLS が追加されました。
5.2.4 CURLOPT_PRIVATE が追加されました。
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 が追加されました。

例1 新規に cURL セッションを初期化、ウェブページを取得する

<?php
// 新しい cURL リソースを作成します
$ch curl_init();

// URL その他のオプションを適切に設定します
curl_setopt($chCURLOPT_URL"http://www.example.com/");
curl_setopt($chCURLOPT_HEADERfalse);

// URL の内容を取得し、ブラウザに渡します
curl_exec($ch);

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

例2 ファイルのアップロード (PHP 5.5.0 以降では非推奨)

<?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($chCURLOPT_URL'http://localhost/upload.php');
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_SAFE_UPLOADfalse); // PHP 5.6.0 以降ではこれが必要です
curl_setopt($chCURLOPT_POSTFIELDS$data);

curl_exec($ch);
?>

上の例の出力は以下となります。

Array
(
    [name] => Foo
)
Array
(
    [file] => Array
        (
            [name] => test.png
            [type] => image/png
            [tmp_name] => /tmp/phpcpjNeQ
            [error] => 0
            [size] => 279
        )

)

注意

注意:

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

参考