English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 基礎チュートリアル

PHP 高級チュートリアル

PHP & MySQL

PHP 参考マニュアル

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

オプションに設定された値を設定します。

のオプションの引数には、valueがbool型の値に設定されるべきです:

オプションオプションvalue备注
CURLOPT_AUTOREFERERに基づいてLocation:リダイレクト時に、ヘッダー内に自動的にReferer:情報を返します。
CURLOPT_BINARYTRANSFER有効にすると、CURLOPT_RETURNTRANSFERの場合、オリジナルの(Raw)出力を返します。
CURLOPT_COOKIESESSION有効になると、curlはセッションクッキーのみを渡し、他のクッキーを無視します。デフォルトでは、CURLはすべてのクッキーをサーバーに返します。セッションクッキーは、サーバー側のセッションが有効かどうかを判断するために存在するクッキーです。
CURLOPT_CRLF有効になると、Unixの改行符をカロリン回車改行符に変換します。
CURLOPT_DNS_USE_GLOBAL_CACHE有効になると、グローバルなDNSキャッシュを有効にします。このオプションはスレッドセーフであり、デフォルトで有効です。
CURLOPT_FAILONERRORHTTPステータスコードを表示します。デフォルトの動作では、番号が4のHTTP情報を変更します。
CURLOPT_FILETIME有効になると、リモートドキュメント内の情報を変更しようと試みます。結果情報はcurl_getinfo()関数のCURLINFO_FILETIMEオプションを返します。            curl_getinfo().
CURLOPT_FOLLOWLOCATION有効になると、サーバーが返した"Location: "ヘッダー内に再帰的に返し、サーバーに使用しますCURLOPT_MAXREDIRS再帰的に返される数を制限できます。
CURLOPT_FORBID_REUSE通信が完了した後に接続を強制的に切断し、再利用できません。
CURLOPT_FRESH_CONNECT新しい接続を取得し、キャッシュ中の接続を置き換えることを強制します。
CURLOPT_FTP_USE_EPRTFTPダウンロード時にEPRT(またはLPRT)コマンドを使用する場合を有効にします。設定がFALSEの場合、EPRTおよびLPRTを無効にし、PORTコマンドを使用します            only.
CURLOPT_FTP_USE_EPSVFTP転送中にPASVモードに戻る前にEPSVコマンドを試みることを有効にします。設定がFALSEでEPSVコマンドを無効にします。
CURLOPT_FTPAPPEND有効化すると、ファイルに書き込む代わりに追加します。
CURLOPT_FTPASCIICURLOPT_TRANSFERTEXTの別名です。
CURLOPT_FTPLISTONLY有効化すると、FTPディレクトリの名前のみをリスト表示します。
CURLOPT_HEADER有効化すると、ヘッダーファイルの情報をデータストリームとして出力します。
CURLINFO_HEADER_OUT有効化すると、ハンドルのリクエスト文字列を追跡します。から PHP 5.1.3 接続を試みるまでの待ち時間をミリ秒で指定します。0に設定すると無限に待ちます。CURLINFO_接頭辞は意図的です。
CURLOPT_HTTPGET有効化すると、HTTPのmethodをGETに設定します。GETがデフォルトであるため、変更された場合にのみ使用されます。
CURLOPT_HTTPPROXYTUNNEL有効化すると、HTTPプロキシを通じて転送されます。
CURLOPT_MUTE有効化すると、CURL関数内で変更されたすべてのパラメータをデフォルト値にリセットします。
CURLOPT_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_RETURNTRANSFERcurl_exec()で取得した情報をファイルストリームの形式で返し、直接出力するのではなくします。
CURLOPT_SSL_VERIFYPEER無効化すると、CURLはサーバーからの検証を終了します。CURLOPT_CAINFOオプションで証明書の使用を設定します。CURLOPT_CAPATHオプションで証明書ディレクトリを設定します。            の場合CURLOPT_SSL_VERIFYPEER(デフォルト値は2が有効化されました。CURLOPT_SSL_VERIFYHOST設定する必要があります。TRUEそれ以外の場合は設定されます。FALSECURLから 7.10デフォルトでTRUEからCURL 7.10デフォルトでバインドインストールを開始します。
CURLOPT_TRANSFERTEXTFTP転送に対してASCIIモードを使用するようになります。LDAPの場合、HTMLではなくテキスト情報を検索します。Windowsシステムでは、システムがSTDOUT设置成binary模式。
CURLOPT_UNRESTRICTED_AUTHバイナリモードに設定します。CURLOPT_FOLLOWLOCATION在使用
ヘッダー内の複数のlocationsにユーザー名とパスワード情報を追加し続けます。ドメインが変更された場合でも、CURLOPT_UPLOAD
有効にするとファイルアップロードが許可されます。CURLOPT_VERBOSESTDERR有効な場合、すべての情報がCURLOPT_STDERRまたは指定された

中。

オプションオプションvalue备注
CURLOPT_BUFFERSIZE以下のoptionのオプションパラメータのvalueはinteger型の値に設定されるべきです:CURL 7.10に追加されます。
CURLOPT_CLOSEPOLICYデータを取得するたびにキャッシュに読み込むサイズですが、この値が常に満たされることを保証しません。
CURLCLOSEPOLICY_LEAST_RECENTLY_USEDまたはCURLCLOSEPOLICY_OLDESTが指定されますが、他の3つのCURLCLOSEPOLICYも存在しますが、CURLは一時的にサポートしていません。CURLOPT_CONNECTTIMEOUT
接続を開始する前に待つ時間を指定します。0に設定すると無限に待ちます。CURLOPT_CONNECTTIMEOUT_MSCURL 7.16.2に 5.2.3接続を試みるまでの待ち時間をミリ秒で指定します。0に設定すると無限に待ちます。
から利用可能です。CURLOPT_DNS_CACHE_TIMEOUT12DNS情報をメモリに保存する時間を設定します。デフォルトは
CURLOPT_FTPSSLAUTH0秒。FTP認証方法: CURLFTPAUTH_SSL(まずSSLを試みます) CURLFTPAUTH_TLS(まずTLSを試みます)または CURLFTPAUTH_DEFAULTCURL 7.12.2に追加されます。
(自動的に決定します)。CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE.0)または1(デフォルト値、CURLがどのバージョンを使用するかを判断します) _/1_0.0)または1CURL_HTTP_VERSION_1 _/1.1(HTTPを使用する(強制)
)。CURLOPT_INFILESIZE
転送速度が設定されたアップロードファイルのサイズ制限を設定します。単位はバイト(byte)です。転送速度がCURLOPT_LOW_SPEED_LIMIT/バイト(bytes)sec)PHPは、遅すぎるため传输をキャンセルするかどうかを判断します。
sec)PHPは、設定されたアップロードファイルのサイズ制限を設定します。単位はバイト(byte)です。転送速度がCURLOPT_LOW_SPEED_LIMIT/バイト(bytes)sec)PHPは、遅すぎるため传输をキャンセルするかどうかを判断します。
CURLOPT_MAXCONNECTS許可される最大接続数で、その数を超えた場合はCURLOPT_CLOSEPOLICY停止すべき接続を決定します。
CURLOPT_MAXREDIRS最も多いHTTPリダイレクトの数を指定し、このオプションはCURLOPT_FOLLOWLOCATIONを一緒に使用します。
CURLOPT_PORT接続ポートを指定する。(オプション)
CURLOPT_PROTOCOLSCURLPROTO_*のビットフィールド指で指定されます。有効にすると、ビットフィールド値がlibcurlの転送プロセス中に使用できるプロトコルを限定します。これにより、libcurlをコンパイル時に多くのプロトコルをサポートできますが、許可されたプロトコルのサブセットのみを使用する制限がかかります。デフォルトのlibcurlはサポートするすべてのプロトコルを使用します。参照CURLOPT_REDIR_PROTOCOLSのビットフィールド指で指定されます。有効にすると、ビットフィールド値がlibcurlの転送プロセス中に使用できるプロトコルを限定します。これにより、libcurlをコンパイル時に多くのプロトコルをサポートできますが、許可されたプロトコルのサブセットのみを使用する制限がかかります。デフォルトのlibcurlはサポートするすべてのプロトコルを使用します。CURL 7.19.4に追加されます。
CURLOPT_PROTOCOLSCURLPROTO_*のビットフィールド指で指定されます。有効にすると、ビットフィールド値がlibcurlの転送プロセス中に使用できるプロトコルを限定します。これにより、libcurlをコンパイル時に多くのプロトコルをサポートできますが、許可されたプロトコルのサブセットのみを使用する制限がかかります。デフォルトのlibcurlはサポートするすべてのプロトコルを使用します。参照CURLOPT_REDIR_PROTOCOLSのビットフィールド指で指定されます。有効にすると、ビットフィールド値がlibcurlの転送プロセス中に使用できるプロトコルを限定します。これにより、libcurlをコンパイル時に多くのプロトコルをサポートできますが、許可されたプロトコルのサブセットのみを使用する制限がかかります。デフォルトのlibcurlはサポートするすべてのプロトコルを使用します。CURL 7.19.4に追加されます。
CURLOPT_PROXYAUTHで使用されます。利用可能なプロトコルオプションは、CURLOPT_HTTPAUTHHTTPプロキシ接続の認証方法が使用されます。のビットフィールドフラグを使用して、対応するオプションを設定します。プロキシ認証には、およびCURLAUTH_BASICCURLAUTH_NTLMCURL 7.10.7に追加されます。
CURLOPT_PROXYPORTでサポートされています。CURLOPT_PROXYプロキシサーバーのポート番号です。ポート番号は以下の
CURLOPT_PROXYTYPEで設定されます。CURLPROXY_HTTP (デフォルト値) これはCURLPROXY_SOCKS5CURL 7.10に追加されます。
CURLOPT_REDIR_PROTOCOLSCURLPROTO_*のビットフィールド値です。有効にすると、ビットフィールド値が転送スレッドで使用できるビットフィールドを制限します。CURLOPT_FOLLOWLOCATION重定向を開始するときに使用できるプロトコルがあります。これにより、重定向時に転送スレッドが使用できるプロトコルのサブセットを制限できます。デフォルトではlibcurlはFILEとSCPを除くすべてのプロトコルを許可します。これは7.19.4プレリリースバージョンでは、サポートされているすべてのプロトコルを無条件に従いますが、プロトコル定数については、CURLOPT_PROTOCOLSCURL 7.19.4に追加されます。
CURLOPT_RESUME_FROM再传输時、バイトオフセットを渡します(再接続用)。
CURLOPT_SSL_VERIFYHOST1 サーバーの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_HEADERfalseの場合は、CURL_TIMECOND_IFUNMODSINCE、デフォルト値はCURL_TIMECOND_IFUNMODSINCE
CURLOPT_TIMEOUTCURL允许执行的最长秒数。
CURLOPT_TIMEOUT_MSCURL允许执行的最长毫秒数。CURL 7.16.2に 5.2.3から使用可能になります。
CURLOPT_TIMEVALUEを設定すると、CURLOPT_TIMECONDITIONを使用するタイムスタンプ、デフォルトではCURL_TIMECOND_IFMODSINCE

と一緒に使用する場合にのみ有効です。

オプションオプションvalue备注
CURLOPT_CAINFO個の1個または複数のファイル名が含まれており、これらのファイルはサーバーが確認するために使用されます。このパラメータはCURLOPT_SSL_VERIFYPEERと一緒に使用すると意味があります。  。
CURLOPT_CAPATH多くのCA証明書を保存するディレクトリです。このオプションはCURLOPT_SSL_VERIFYPEERを一緒に使用します。
CURLOPT_COOKIEHTTPリクエストで設定する"Cookie: "の部分の内容です。複数のcookieはセミコロンで区切られ、セミコロンの後にスペースが含まれます(例えば、 "fruit=apple; colour=red)。
CURLOPT_COOKIEFILEcookieデータを含むファイル名、cookieファイルの形式はNetscape形式または単にHTTPヘッダ情報をファイルに保存する形式です。
CURLOPT_COOKIEJARリクエストが終了した後にcookie情報を保存するファイルです。
CURLOPT_CUSTOMREQUEST

CURLOPT_CUSTOMREQUESTを使用してカスタムリクエスト情報を置き換えることで使用します。"GET"または"HEAD"を使用して実行するためのものです。"DELETE" または他のより隠れたHTTPリクエストを入力します。有効な値としては"GET""POST""CONNECT"などです。つまり、ここには完全なHTTPリクエストを入力しないでください。例えば、"GET" /index.html HTTP/1.0\r\n\r\n"は不正です。

Note:

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


CURLOPT_EGDSOCKET似ているCURLOPT_RANDOM_FILE、Entropy Gathering Daemonソケット以外です。
CURLOPT_ENCODINGHTTPリクエストヘッダーに"Accept"-Encoding: "の値。サポートされているエンコーディングには"identity""deflate"および"gzip"。空文字列の場合""、サポートしているすべてのエンコード形式のタイプを送信します。CURL 7.10に追加されます。
CURLOPT_FTPPORTこの値はFTP「POST」コマンドに必要なIPアドレスを取得するために使用されます。"POST"コマンドは、リモートサーバーが指定されたIPアドレスに接続するように指示します。この文字列はテキストのIPアドレス、ホスト名、ネットワークインターフェース名(UNIX)、または単なる-を使用してデフォルトのIPアドレスを使用します。
CURLOPT_INTERFACEネットワーク送信インターフェース名、インターフェース名、IPアドレス、またはホスト名のいずれかです。
CURLOPT_KRB4LEVELKRB4 (Kerberos 4) 安全レベル。以下のいずれの値も有効です(低から高の順序):"clear""safe""confidential"「private」.に設定されます。"private"。このオプションはNULL現在、KRB4 安全認証。4 安全認証はFTPトランスポートにのみ使用できます。
CURLOPT_POSTFIELDSすべてのデータはHTTPプロトコルの"POST"操作で送信されます。ファイルを送信する場合は、ファイル名の前に@プレフィックスを使用して完全なパスを指定し、このパラメータはurlencodedされた文字列として似たように使用できますpara1=val1¶2=val2&...または、フィールド名がキー、フィールドデータが値の配列を使用して。もしvalueは配列です。Content-Typeヘッダーは設定されますmultipart/form-data
CURLOPT_PROXYHTTPプロキシチャンネル。
CURLOPT_PROXYUSERPWDプロキシに接続するための"[username]:[password]"形式の文字列。
CURLOPT_RANDOM_FILESSLランダム数種子を生成するためのファイル名。
CURLOPT_RANGE"X-Y"の形式で、XとYはオプションです。データの範囲はバイト単位で取得されます。HTTP送信スレッドも、カンマで区切られた複数のこのような重複項をサポートします。"X-Y,N-M"
CURLOPT_REFERERHTTPリクエストヘッダーに"Referer: "の内容。
CURLOPT_SSL_CIPHER_LISTSSLの暗号アルゴリズムリスト。例えばRC4-SHAおよびTLSv1すべての利用可能な暗号リスト。
CURLOPT_SSLCERTPEM形式の証明書を含むファイル名。
CURLOPT_SSLCERTPASSWD使用CURLOPT_SSLCERT証明書に必要なパスワード。
CURLOPT_SSLCERTTYPE証明書の形式。サポートされる形式は"PEM" (デフォルト値), "DER"および"ENG"CURL 7.9.3に追加されます。
CURLOPT_SSLENGINECURLOPT_SSLKEYで指定されたSSLプライベートキーの暗号化エンジン変数。
CURLOPT_SSLENGINE_DEFAULT非対称暗号化操作を行う変数。
CURLOPT_SSLKEYSSLプライベートキーを含むファイル名。
CURLOPT_SSLKEYPASSWD

CURLOPT_SSLKEYで指定されたSSLプライベートキーのパスワード。

Note:

このオプションにはパスワード情報が含まれるため、PHPスクリプトのセキュリティを確保してください。


CURLOPT_SSLKEYTYPECURLOPT_SSLKEYで指定されたプライベートキーの暗号化タイプ、サポートされるキータイプは"PEM"(デフォルト値)、"DER"および"ENG"
CURLOPT_URL取得するURLのアドレス、またはcurl_init()関数で設定することもできます。
CURLOPT_USERAGENTHTTPリクエストに含める"User-Agent: "の文字列を含む。
CURLOPT_USERPWD接続に必要なユーザー名とパスワードを渡します。以下の形式で指定します:"[username]:[password]"

以下のoptionのオプションパラメータでは、valueは配列に設定されるべきです:

オプションオプションvalue备注
CURLOPT_HTTP200ALIASES200応答コードの配列、配列内の応答コードが正しい応答と見なされますが、それ以外はエラーと見なされます。CURL 7.10.3に追加されます。
CURLOPT_HTTPHEADERHTTPヘッダーフィールドを設定するための配列です。以下の形式の配列を使用して設定します:                       array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_POSTQUOTEFTPリクエストの実行が完了した後、サーバー上で実行されるFTPコマンドのセット。
CURLOPT_QUOTEFTPリクエストの前にサーバー上で実行されるFTPコマンドのセット。

以下のoptionのオプションパラメータでは、valueはストリームリソース(例えばfopen()を使用して)に設定されるべきです:

オプションオプションvalue
CURLOPT_FILE出力ファイルの場所を設定します。値はリソースタイプで、デフォルトはSTDOUT (ブラウザ)。
CURLOPT_INFILEファイルをアップロードする際に読み込むファイルの場所を指定します。値はリソースタイプです。
CURLOPT_STDERR設定するエラー出力の場所を指定します。値はリソースタイプで、デフォルトのものを置き換えます。STDERR
CURLOPT_WRITEHEADERヘッダー部分の内容を書き込むファイルのアドレスを設定します。値はリソースタイプです。

以下のオプションのオプション引数には、valueがコールバック関数名として設定される必要があります:

オプションオプションvalue
CURLOPT_HEADERFUNCTIONコールバック関数を設定します。この関数は2つの引数を受け取ります。1つ目はCURLのリソースハンドル;2つ目はヘッダーデータの出力です。ヘッダーデータの出力はこの関数に依存する必要があります。書き込んだデータのサイズを返します。
CURLOPT_PASSWDFUNCTIONコールバック関数を設定します。3つの引数があります。1つ目はCURLのリソースハンドル;2つ目はパスワードプロンプト;3つ目はパスワードの長さの最大許容値です。パスワードの値を返します。
CURLOPT_PROGRESSFUNCTIONコールバック関数を設定します。3つの引数があります。1つ目はCURLのリソースハンドル;2つ目はファイルディスクリプタリソース;3つ目は長さです。データを含む文字列を返します。
CURLOPT_READFUNCTIONコールバック関数名。この関数は3つの引数を受け取る必要があります。1つ目はCURLリソース;2つ目はオプションを通じて取得したデータです。 CURLOPT_INFILE CURLに渡されるストリームリソース;第3引数は読み取れる最大データ量です。回 コールバック関数は、リクエストのデータ量(第3引数)以下の長さの文字列を返さなければなりません。一般的には、streamから読み取ります。 リソースを読み取ります。空文字列を返す必要があります。 EOF(ファイル終了)シグナル。
CURLOPT_WRITEFUNCTIONコールバック関数名。この関数は2つの引数を受け取る必要があります。1つ目はCURLリソース;2つ目は書き込むデータの文字列。数 データを保存する必要があります。関数は、書き込む必要があるデータのバイト数を正確に返さなければなりません。さもなければ、トランスミッションはエラーで中断されます。 断。

返り値

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

更新ログ

バージョン説明
5.2.10導入 CURLOPT_PROTOCOLS, andCURLOPT_REDIR_PROTOCOLS.
5.1.0導入 CURLOPT_AUTOREFERER,CURLOPT_BINARYTRANSFER,CURLOPT_FTPSSLAUTH,CURLOPT_PROXYAUTH, andCURLOPT_TIMECONDITION.
5.0.0導入 CURLOPT_FTP_USE_EPRT,CURLOPT_NOSIGNAL,CURLOPT_UNRESTRICTED_AUTH,CURLOPT_BUFFERSIZE,CURLOPT_HTTPAUTH,CURLOPT_PROXYPORT,CURLOPT_PROXYTYPE,CURLOPT_SSLCERTTYPE, andCURLOPT_HTTP200ALIASES.

オンラインサンプル

新しいCURLセッションを初期化し、ウェブページを取得します

<?php
// 新しいCURLリソースを作成します
$ch = curl_init();
// URLと関連するオプションを設定します
curl_setopt($ch, CURLOPT_URL, "http://ja.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);
?>

以下の例の出力結果は以下の通りです:

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

コメント

CURLのCURLOPT_POSTFIELDSに配列を渡すと、CURLはデータをmultipartにエンコードします/form-dataとともにURLを-encoded文字列に変換すると、データはapplicationにエンコードされます/x-www-form-urlencoded。

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