PHP curl_setopt関数

PHP cURLリファレンスマニュアル

(PHP 4 >= 4.0.2, PHP 5)

curl_setopt — cURL転送オプションを設定します。


説明

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

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


パラメータ

ch

curl_init() によって返される cURL ハンドル。

option

設定する必要がある CURLOPT_XXX オプション。

value

option オプションに設定する値。

以下の option のオプションパラメータについては、value には bool 型の値を設定する必要があります:

オプション 任意value值 備考
CURLOPT_AUTOREFERER に基づいてLocation:リダイレクト時に、ヘッダー内の...を自動的に設定しますReferer:情報。
CURLOPT_BINARYTRANSFER 有効にCURLOPT_RETURNTRANSFERした場合、ネイティブ(Raw)出力を返します。
CURLOPT_COOKIESESSION 有効にすると、curlはセッションクッキーのみを渡し、他のクッキーは無視します。デフォルトでは、cURLはすべてのクッキーをサーバーに返します。セッションクッキーとは、サーバー側のセッションが有効かどうかを判断するために存在するクッキーです。
CURLOPT_CRLF 有効にすると、Unixの改行を復帰改行(CRLF)に変換します。
CURLOPT_DNS_USE_GLOBAL_CACHE 有効にすると、グローバルなDNSキャッシュが有効になります。この項目はスレッドセーフであり、デフォルトで有効です。
CURLOPT_FAILONERROR HTTPステータスコードを表示します。デフォルトの動作では、400以下のHTTP情報は無視されます。
CURLOPT_FILETIME 有効にすると、リモートドキュメント内の情報を変更しようとします。結果の情報は curl_getinfo() 関数のCURLINFO_FILETIMEcurl_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 有効にすると、FTP転送中にPASVモードに戻る前に、まず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 有効にすると、HTML内のBODY部分を出力しません。
CURLOPT_NOPROGRESS

有効にすると、curl転送のプログレスバーが無効になります。この項目はデフォルトで有効です。

Note:

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

CURLOPT_NOSIGNAL 有効にすると、curlがPHPに渡すすべてのシグナルを無視します。SAPIマルチスレッド転送時には、この項目はデフォルトで有効です。 cURL 7.10 で追加されました。
CURLOPT_POST 有効にすると、通常のPOSTリクエストを送信します。タイプは:application/x-www-form-urlencoded、フォーム送信のように。
CURLOPT_PUT 有効にすると、HTTPでのファイル送信が許可されます。同時に設定する必要がありますCURLOPT_INFILEとCURLOPT_INFILESIZE。
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 有効にすると、FTP転送にASCIIモードを使用します。LDAPの場合、HTMLではなくプレーンテキスト情報を取得します。Windowsシステムでは、システムはSTDOUTをバイナリモードに設定しません。
CURLOPT_UNRESTRICTED_AUTH を使用する場合にCURLOPT_FOLLOWLOCATION生成されたヘッダー内の複数のlocationsにユーザー名とパスワード情報を追加し続けます。ドメイン名が変更された場合でも。
CURLOPT_UPLOAD 有効にすると、ファイルのアップロードが許可されます。
CURLOPT_VERBOSE 有効にすると、すべての情報を報告し、STDERRまたは指定されたCURLOPT_STDERRに格納します。

以下の option のオプションパラメータについては、value には integer 型の値を設定する必要があります:

オプション 任意value值 備考
CURLOPT_BUFFERSIZE 取得するデータごとに読み込むバッファのサイズ。ただし、この値が毎回満たされるとは保証されません。 cURL 7.10 で追加されました。
CURLOPT_CLOSEPOLICY CURLCLOSEPOLICY_LEAST_RECENTLY_USED または CURLCLOSEPOLICY_OLDEST のいずれかです。他にも3つの CURLCLOSEPOLICY がありますが、cURLは現時点ではサポートしていません。
CURLOPT_CONNECTTIMEOUT 接続を開始する前に待機する時間。0に設定した場合は、無限に待機します。
CURLOPT_CONNECTTIMEOUT_MS 接続を試みる際の待機時間。ミリ秒単位です。0に設定した場合は、無限に待機します。 cURL 7.16.2 で追加されました。PHP 5.2.3 以降で使用可能です。
CURLOPT_DNS_CACHE_TIMEOUT DNS情報をメモリに保存する時間を設定します。デフォルトは120秒です。
CURLOPT_FTPSSLAUTH 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(HTTP/1.1を強制使用)。
CURLOPT_INFILESIZE アップロードファイルのサイズ制限を設定します。単位はバイト(byte)です。
CURLOPT_LOW_SPEED_LIMIT 転送速度がCURLOPT_LOW_SPEED_LIMIT未満の場合(bytes/sec)、PHPはCURLOPT_LOW_SPEED_TIMEに基づいて、転送が遅すぎるためにキャンセルするかどうかを判断します。
CURLOPT_LOW_SPEED_TIME 転送速度がCURLOPT_LOW_SPEED_LIMIT未満の場合(bytes/sec)、PHPはCURLOPT_LOW_SPEED_TIMEに基づいて、転送が遅すぎるためにキャンセルするかどうかを判断します。
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リダイレクトに従うときに使用できるプロトコルに制限します。これにより、リダイレクト時に転送スレッドが使用を許可されたプロトコルのサブセットに制限されます。デフォルトでは、libcurl は FILE と SCP を除くすべてのプロトコルを許可します。これは、7.19.4 プレリリース版で無条件にすべてのサポートされているプロトコルをフォローしていたのとは少し異なります。プロトコル定数については、CURLOPT_PROTOCOLS。 cURL 7.19.4 で追加されました。
CURLOPT_RESUME_FROM 転送を再開する際にバイトオフセットを渡します(レジューム用)。
CURLOPT_SSL_VERIFYHOST 1 サーバーのSSL証明書にコモンネーム(common name)が存在するかどうかを確認します。訳注:コモンネーム(Common Name)は一般に、SSL証明書を申請する予定のドメイン名(domain)またはサブドメイン名(sub domain)を入力するものです。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 型の値を設定する必要があります:

オプション 任意value值 備考
CURLOPT_CAINFO サーバー認証に使用する1つ以上の証明書を保持するファイル名。このパラメータは、CURLOPT_SSL_VERIFYPEER一緒に使用した場合にのみ意味があります。
CURLOPT_CAPATH 複数のCA証明書を保存するディレクトリ。このオプションは、CURLOPT_SSL_VERIFYPEER一緒に使用されます。
CURLOPT_COOKIE HTTPリクエストの"Cookie: "部分の内容を設定します。複数のcookieはセミコロンで区切り、セミコロンの後にスペースを1つ入れます(例:fruit=apple; colour=red")。
CURLOPT_COOKIEFILE cookieデータを含むファイル名。cookieファイルの形式はNetscape形式、または単にHTTPヘッダー情報をファイルに保存したものでもかまいません。
CURLOPT_COOKIEJAR 接続終了後にcookie情報を保存するファイル。
CURLOPT_CUSTOMREQUEST

カスタムリクエストメッセージを使用して、"GET"或"HEAD"の代わりにHTTPリクエストとして使用します。これは、次の操作を実行するのに役立ちます:"DELETE"またはその他のより難解なHTTPリクエスト。有効な値は次のとおりです:"GET","POST","CONNECT"などです。つまり、ここにHTTPリクエスト全体を入力しないでください。例えば、"GET /index.html HTTP/1.0\r\n\r\n"は正しくありません。

Note:

サーバーがこのカスタムリクエストメソッドをサポートしていることを確認するまで使用しないでください。

CURLOPT_EGDSOCKET と同様ですが、CURLOPT_RANDOM_FILEEntropy Gathering Daemonソケットを使用する点が異なります。
CURLOPT_ENCODING HTTPリクエストヘッダー内の"Accept-Encoding: "の値。サポートされているエンコーディングは次のとおりです:"identity","deflate"と"gzip"。空文字列の場合は、""、リクエストヘッダーはサポートされているすべてのエンコーディングタイプを送信します。 cURL 7.10 で追加されました。
CURLOPT_FTPPORT この値は、FTPの"POST"コマンドに必要なIPアドレスを取得するために使用されます。"POST"コマンドは、リモートサーバーに指定したIPアドレスへの接続を指示します。この文字列は、プレーンテキストのIPアドレス、ホスト名、ネットワークインターフェース名(UNIXの場合)、またはデフォルトのIPアドレスを使用するための単なる'-'にすることができます。
CURLOPT_INTERFACE ネットワーク送信インターフェース名。インターフェース名、IPアドレス、またはホスト名にすることができます。
CURLOPT_KRB4LEVEL KRB4(Kerberos 4)セキュリティレベル。以下の値はすべて有効です(低い順から高い順):"clear"、"safe"、"confidential"、"private".。文字列がこれらのいずれとも一致しない場合は、"private"が使用されます。このオプションをNULLに設定すると、KRB4セキュリティ認証が無効になります。現在、KRB4セキュリティ認証はFTP転送でのみ使用できます。
CURLOPT_POSTFIELDS すべてのデータはHTTPプロトコルの"POST"操作で送信されます。ファイルを送信するには、ファイル名の前に@プレフィックスを付け、完全なパスを使用します。このパラメータは、urlエンコードされた文字列(例:'para1=val1&para2=val2&...')または、フィールド名をキーとし、フィールドデータを値とする配列を使用して渡すことができます。value配列の場合、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秘密鍵の暗号化エンジン変数。
CURLOPT_SSLENGINE_DEFAULT 非対称暗号化操作に使用される変数。
CURLOPT_SSLKEY SSL秘密鍵を含むファイル名。
CURLOPT_SSLKEYPASSWD

にCURLOPT_SSLKEYで指定されたSSL秘密鍵のパスワード。

Note:

このオプションには機密性の高いパスワード情報が含まれるため、このPHPスクリプトの安全を確保してください。

CURLOPT_SSLKEYTYPE CURLOPT_SSLKEYで規定された秘密鍵の暗号化タイプ。サポートされているキータイプは次のとおりです:"PEM"(デフォルト値)、"DER"と"ENG"。
CURLOPT_URL 取得するURLアドレス。curl_init()関数内で設定します。
CURLOPT_USERAGENT HTTPリクエストに"User-Agent: "ヘッダーを含む文字列。
CURLOPT_USERPWD 接続に必要なユーザー名とパスワードを渡します。形式:"[username]:[password]"。

以下のオプションのオプションパラメータでは、value に配列を設定する必要があります:

オプション 任意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コマンド。

以下のオプションのオプションパラメータでは、value にストリームリソース(例:fopen() を使用)を設定する必要があります:

オプション 任意value值
CURLOPT_FILE 出力ファイルの位置を設定します。値はリソースタイプで、デフォルトはSTDOUT(ブラウザ) です。
CURLOPT_INFILE ファイルをアップロードするときに読み取る必要があるファイルの場所。値はリソースタイプです。
CURLOPT_STDERR エラー出力先を設定します。値はリソースタイプで、デフォルトのSTDERR。
CURLOPT_WRITEHEADER ヘッダー部分の内容を書き込むファイルの場所を設定します。値はリソースタイプです。

以下のオプションのオプションパラメータでは、value にコールバック関数名を設定する必要があります:

オプション 任意value值
CURLOPT_HEADERFUNCTION コールバック関数を設定します。この関数には2つのパラメータがあります。最初のパラメータはcURLリソースハンドル、2番目のパラメータは出力されるヘッダーデータです。ヘッダーデータの出力はこの関数に依存する必要があります。書き込まれたデータサイズを返します。
CURLOPT_PASSWDFUNCTION コールバック関数を設定します。3つのパラメータがあります。最初はcURLリソースハンドル、2番目はパスワードプロンプト、3番目のパラメータはパスワードの長さとして許可される最大値です。パスワードの値を返します。
CURLOPT_PROGRESSFUNCTION コールバック関数を設定します。3つのパラメータがあります。最初はcURLリソースハンドル、2番目はファイルディスクリプタリソース、3番目は長さです。含まれるデータを返します。
CURLOPT_READFUNCTION コールバック関数名。この関数は3つの引数を受け入れる必要があります。1つ目は cURL リソース、2つ目はオプションを介してCURLOPT_INFILEcURL に渡されるストリームリソースです。3つ目の引数は読み取り可能な最大データ量です。コールバック関数は、要求されたデータ量(3つ目の引数)以下の長さの文字列を返す必要があります。通常は渡されたストリームリソースから読み取ります。空文字列を返すとEOF(ファイル終端)シグナルになります。
CURLOPT_WRITEFUNCTION コールバック関数名。この関数は2つの引数を受け入れる必要があります。1つ目は cURL リソース、2つ目は書き込むデータ文字列です。データは関数内で保存されなければなりません。関数は渡された書き込みデータの正確なバイト数を返す必要があります。そうしないと、転送はエラーによって中断されます。

戻り値

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


更新履歴

バージョン 説明
5.2.10 導入CURLOPT_PROTOCOLS, and CURLOPT_REDIR_PROTOCOLS.
5.1.0 導入CURLOPT_AUTOREFERER, CURLOPT_BINARYTRANSFER, CURLOPT_FTPSSLAUTH, CURLOPT_PROXYAUTH, and CURLOPT_TIMECONDITION.
5.0.0 導入CURLOPT_FTP_USE_EPRT, CURLOPT_NOSIGNAL, CURLOPT_UNRESTRICTED_AUTH, CURLOPT_BUFFERSIZE, CURLOPT_HTTPAUTH, CURLOPT_PROXYPORT, CURLOPT_PROXYTYPE, CURLOPT_SSLCERTTYPE, and CURLOPT_HTTP200ALIASES.

例

新しい cURL セッションを初期化し、Webページを取得する

<?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);
?>

ファイルアップロードの例:

<?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);
?>

上記の例の出力結果は次のようになります:

Array
(
    [name] => Foo
)
Array
(
    [file] => Array
        (
            [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 としてエンコードされます。


PHP cURL リファレンスマニュアル

他の拡張機能