curl_setopt
(PHP 4 >= 4.0.2, PHP 5)
curl_setopt — cURL 転送用オプションを設定する
パラメータ
-
ch -
curl_init() が返す cURL ハンドル。
-
option -
設定したい CURLOPT_XXX オプション。
-
value -
optionに設定する値。valueには、optionの以下の値に関して bool 値を指定する必要があります。オプション valueへの設定値注記 CURLOPT_AUTOREFERERTRUEを設定すると、Location: によるリダイレクトを たどる際には自動的に Referer: フィールドをリクエストに 追加します。CURLOPT_BINARYTRANSFERTRUEを設定すると、CURLOPT_RETURNTRANSFERが使用された場合に出力結果を何も加工せずに返します。PHP 5.1.3 以降では、このオプションは何の効果もありません。 CURLOPT_RETURNTRANSFERを使ったときには 常に出力をそのまま返すようになりました。CURLOPT_COOKIESESSIONTRUEを設定すると、クッキーの "セッション" を新しく開始します。 以前のセッションで読み込まれていた "セッションクッキー" は無視するよう、 libcurl に指示します。デフォルトでは、それがセッションクッキーであるか どうかにかかわらず libcurl はすべてのクッキーを読み込んで保存します。 セッションクッキーとは、有効期限が指定されておらず "セッション" の間のみ 有効であるクッキーのことです。CURLOPT_CERTINFOTRUEを設定すると、セキュアな転送時に SSL 証明書の情報を STDERR に出力します。cURL 7.19.1 で追加されました。 PHP 5.3.2 以降で使用可能です。これを使うには、 CURLOPT_VERBOSEを on にしておかなければなりません。CURLOPT_CRLFTRUEを設定すると、転送時に Unix 形式の改行を CRLF 形式に変換します。CURLOPT_DNS_USE_GLOBAL_CACHETRUEを設定すると、グローバル DNS キャッシュを利用します。 このオプションはスレッドセーフではありません。また、デフォルトで 有効になっています。CURLOPT_FAILONERRORTRUEを設定すると、HTTP で 400 以上のコードが返ってきた際に 処理失敗と判断し、何もしません。デフォルトでは、コードの値を無視して ページの内容を取得します。CURLOPT_FILETIMETRUEを設定すると、ドキュメントの更新日時を取得しようと試みます。 この値を取得するには、 curl_getinfo() でCURLINFO_FILETIMEオプションを用います。CURLOPT_FOLLOWLOCATIONTRUEを設定すると、サーバーが HTTP ヘッダの一部として送ってくる "Location: " ヘッダの内容をたどります (これは再帰的に行われます。CURLOPT_MAXREDIRSが指定されていない限り、送ってくる "Location: " ヘッダの内容をずっとたどり続けることに注意しましょう)。CURLOPT_FORBID_REUSETRUEを設定すると、処理が終了した際に明示的に接続を切断します。 接続を再利用しません。CURLOPT_FRESH_CONNECTTRUEを設定すると、キャッシュされている接続を利用せずに 新しい接続を確立します。CURLOPT_FTP_USE_EPRTTRUEを設定すると、FTP のダウンロードに EPRT(および LPRT) を利用します。FALSEの場合は EPRT・LPRT を無効にして PORT を利用します。CURLOPT_FTP_USE_EPSVTRUEを設定すると、FTP 転送の際にまず EPSV コマンドの利用を 試みます。失敗した場合は PASV を利用します。FALSEを設定すると、 EPSV を無効にします。CURLOPT_FTP_CREATE_MISSING_DIRSTRUEを設定すると、FTP の操作中にパスが存在しなかったときに ディレクトリを作成します。CURLOPT_FTPAPPENDTRUEを設定すると、リモートファイルを上書きせずに追記します。CURLOPT_FTPASCIICURLOPT_TRANSFERTEXTのエイリアスです。CURLOPT_FTPLISTONLYTRUEを設定すると、FTP でディレクトリ名のみ表示します。CURLOPT_HEADERTRUEを設定すると、ヘッダの内容も出力します。CURLINFO_HEADER_OUTTRUEを設定すると、リクエスト文字列を追跡します。PHP 5.1.3 以降で使用可能です。プレフィックスが CURLINFO_となっているのは意図的なものです。CURLOPT_HTTPGETTRUEを設定すると、HTTP のリクエスト形式を GET に戻します。 GET はデフォルト設定なので、リクエスト形式が変更されている 場合にのみ必要となります。CURLOPT_HTTPPROXYTUNNELTRUEにすると、指定された HTTP プロキシを介してトンネルします。CURLOPT_MUTETRUEを設定すると、cURL 関数に関連する出力を完全に抑えます。cURL 7.15.5 で削除されました (かわりに CURLOPT_RETURNTRANSFER が使えます) CURLOPT_NETRCTRUEを設定すると、リモートサイトと接続を確立する際に用いる ユーザー名やパスワードを、~/.netrc から取得します。CURLOPT_NOBODYTRUEを設定すると、出力から本文を削除します。 リクエストメソッドは HEAD となります。これをFALSEに変更してもリクエストメソッドは GET には変わりません。CURLOPT_NOPROGRESSTRUEを設定すると、cURL 転送の進捗状況表示を無効にします。注意:
PHP は、このオプションを自動的に
TRUEに設定します。 これを変更するのは、デバッグ時のみにすべきです。CURLOPT_NOSIGNALTRUEを設定すると、cURL 関数が PHP プロセスに送信するシグナルを 無視します。マルチスレッド SAPI ではデフォルトで on となっており、 そのためタイムアウトオプションもまだ利用されています。cURL 7.10 で追加されました。 CURLOPT_POSTTRUEを設定すると、HTTP POST を行います。POST は、 application/x-www-form-urlencoded 形式で 行われます。これは一般的な HTML のフォームと同じ形式です。CURLOPT_PUTTRUEを設定すると、HTTP PUT を行います。PUT するファイルはCURLOPT_INFILEおよびCURLOPT_INFILESIZEで指定されている必要があります。CURLOPT_RETURNTRANSFERTRUEを設定すると、 curl_exec() の返り値を 文字列で返します。通常はデータを直接出力します。CURLOPT_SSL_VERIFYPEERFALSEを設定すると、cURL はサーバー証明書の検証を行いません。 別の証明書をCURLOPT_CAINFOオプションで 指定するか、CURLOPT_CAPATHオプションで 証明ディレクトリを指定します。cURL 7.10 以降、デフォルト値は TRUEです。また、 cURL 7.10 以降、デフォルトでインストールされています。CURLOPT_TRANSFERTEXTTRUEを設定すると、FTP 転送を ASCII モードで行います。 LDAP の場合は、データを HTML ではなくプレーンテキストで取得します。 Windows システムでは STDOUT に対してバイナリモードを設定しないでください。CURLOPT_UNRESTRICTED_AUTHTRUEを設定すると、(CURLOPT_FOLLOWLOCATIONを利用して)場所をたどっていく際にユーザー名とパスワードを送信し続けます。 これは、たとえホスト名が変わっても続けられます。CURLOPT_UPLOADTRUEを設定すると、アップロードの準備をします。CURLOPT_VERBOSETRUEを設定すると、詳細な情報を出力します。情報は STDERR か、またはCURLOPT_STDERRで指定したファイルに出力されます。valueには、optionの以下の値に関して 整数値を指定する必要があります。オプション valueへの設定値注記 CURLOPT_BUFFERSIZE1 回の読み込みに用いるバッファのサイズ。しかしながら、必ず このバッファいっぱいまで読み込まれることを保証するものではありません。 cURL 7.10 で追加されました。 CURLOPT_CLOSEPOLICYCURLCLOSEPOLICY_LEAST_RECENTLY_USEDあるいはCURLCLOSEPOLICY_OLDESTです。 他にも 3 つの CURLCLOSEPOLICY_ 定数が存在しますが、 cURL はそれらをまだサポートしていません。CURLOPT_CONNECTTIMEOUT接続の試行を待ち続ける秒数。0 は永遠に待ち続けることを意味します。 CURLOPT_CONNECTTIMEOUT_MS接続の試行を待ち続けるミリ秒数。0 は永遠に待ち続けることを意味します。 システムの標準の名前解決を使うように libcurl をビルドしている場合は、 接続のタイムアウトは秒単位の精度となり、最小のタイムアウトは 1 秒となります。 cURL 7.16.2 で追加されました。PHP 5.2.3 以降で使用可能です。 CURLOPT_DNS_CACHE_TIMEOUTDNS エントリをメモリ内に保持し続ける秒数。デフォルトでは 120(2 分)に設定されています。 CURLOPT_FTPSSLAUTH(使用可能な場合の)FTP 認証方法。 CURLFTPAUTH_SSL(まず SSL を試す)、 CURLFTPAUTH_TLS(まず TLS を試す)あるいは CURLFTPAUTH_DEFAULT(cURL が決める)のいずれかです。 cURL 7.12.2 で追加されました。 CURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_NONE(デフォルト。 使用するバージョンを決めるのは cURL にまかせる)、CURL_HTTP_VERSION_1_0(HTTP/1.0 を使用する)、 あるいはCURL_HTTP_VERSION_1_1(HTTP/1.1 を使用する) のいずれかです。CURLOPT_HTTPAUTH使用する HTTP 認証方法。以下の中から選びます。
CURLAUTH_BASIC、CURLAUTH_DIGEST、CURLAUTH_GSSNEGOTIATE、CURLAUTH_NTLM、CURLAUTH_ANYおよびCURLAUTH_ANYSAFE。2 つ以上の方法を組み合わせるには、ビット演算子 |(or) を使用します。このような場合、cURL はサーバーがサポートしている方法を 問い合わせたうえで最適な方法を選択します。
CURLAUTH_ANYは CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM のエイリアスです。CURLAUTH_ANYSAFEは CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM のエイリアスです。CURLOPT_INFILESIZEファイルをリモートサイトにアップロードする際のファイルサイズ。 このオプションを指定しても、libcurl がそれ以上のデータを送信するのは止められないことに注意しましょう。 実際に何が送信されるのかは CURLOPT_READFUNCTIONに依存します。CURLOPT_LOW_SPEED_LIMIT1 秒あたりのバイト数で、転送速度がこれより遅い期間が CURLOPT_LOW_SPEED_TIME秒以上続いた場合に PHP は転送を終了します。CURLOPT_LOW_SPEED_TIME転送速度が CURLOPT_LOW_SPEED_LIMITより遅い期間がどれだけ続いた場合に転送を異常終了させるかを、 秒単位で指定します。CURLOPT_MAXCONNECTS許可される持続的接続の最大数。もしこの値に達した場合、 どの接続を閉じるのかを CURLOPT_CLOSEPOLICYによって決定します。CURLOPT_MAXREDIRSHTTP のリダイレクト先を追いかける最大値。 CURLOPT_FOLLOWLOCATIONとあわせて使用します。CURLOPT_PORT接続先のポート番号。 CURLOPT_PROTOCOLSCURLPROTO_*の値のビットマスク。使用すると、 転送時に 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_ALLcURL 7.19.4 で追加されました。 CURLOPT_PROXYAUTHプロキシ接続に使用する HTTP 認証の方法。 CURLOPT_HTTPAUTHで説明したのと同じオプションを 指定可能です。プロキシ認証でサポートされているのは、今のところCURLAUTH_BASICおよびCURLAUTH_NTLMのみです。cURL 7.10.7 で追加されました。 CURLOPT_PROXYPORTプロキシ接続のポート番号。このポート番号は、 CURLOPT_PROXYで指定することも可能です。CURLOPT_PROXYTYPECURLPROXY_HTTP(デフォルト)あるいはCURLPROXY_SOCKS5。cURL 7.10 で追加されました。 CURLOPT_REDIR_PROTOCOLSCURLPROTO_*の値のビットマスク。使用すると、CURLOPT_FOLLOWLOCATIONが有効な場合のリダイレクト時の転送に libcurl がどのプロトコルを使用するのかに制約を加えます。これによって、 リダイレクト時に特定の転送プロトコルのみを使用するように制限することができます。 デフォルトでは、libcurl がサポートしているすべてのプロトコルのうち FILE と SCP 以外のすべての使用を許可します。この挙動は 7.19.4 より前のバージョンとは異なります。7.19.4 より前のバージョンでは、 サポートするすべてのプロトコルを無条件に許可していました。 プロトコル定数の値はCURLOPT_PROTOCOLSを参照ください。cURL 7.19.4 で追加されました。 CURLOPT_RESUME_FROM転送を途中から再開する場合のバイトオフセット。 CURLOPT_SSL_VERIFYHOST1 は SSL ピア証明書に一般名が存在するかどうかを調べます。 2 はそれに加え、その名前がホスト名と一致することを検証します。 本番環境では、このオプションの値は常に 2 (デフォルト値) にしておかなければなりません。 CURLOPT_SSLVERSION使用する SSL のバージョン(2 あるいは 3)。デフォルトでは PHP が自動的に判断しますが、これを手動で設定する必要がある場合もあります。 CURLOPT_TIMECONDITIONCURLOPT_TIMEVALUEの扱いを決定します。CURLOPT_TIMEVALUEで指定した時刻以降に 変更されたページのみを返す場合はCURL_TIMECOND_IFMODSINCEを使用します。CURLOPT_HEADERがTRUEだと仮定すると、 ページが変更されていない場合は "304 Not Modified" ヘッダが返されます。CURL_TIMECOND_IFUNMODSINCEは反対の意味です。 デフォルトはCURL_TIMECOND_IFMODSINCEです。CURLOPT_TIMEOUTcURL 関数の実行にかけられる時間の最大値。 CURLOPT_TIMEOUT_MScURL 関数の実行にかけられる最大のミリ秒数。 システムの標準の名前解決を使うように libcurl をビルドしている場合は、 接続のタイムアウトは秒単位の精度となり、最小のタイムアウトは 1 秒となります。 cURL 7.16.2 で追加されました。PHP 5.2.3 以降で使用可能です。 CURLOPT_TIMEVALUE1970 年 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_TYPESCURLSSH_AUTH_PUBLICKEY,CURLSSH_AUTH_PASSWORD,CURLSSH_AUTH_HOST,CURLSSH_AUTH_KEYBOARDのビットマスク。CURLSSH_AUTH_ANYにすると libcurl がいずれかひとつを選択します。cURL 7.16.1 で追加されました。 valueは、optionパラメータの 以下の値に関して文字列である必要があります。オプション valueへの設定値注記 CURLOPT_CAINFO接続先を検証するための証明書を保持するファイル名。 これは CURLOPT_SSL_VERIFYPEERを使用する場合に のみ意味を持ちます。絶対パスで指定しなければなりません。 CURLOPT_CAPATH複数の証明書ファイルを保持するディレクトリ。このオプションは CURLOPT_SSL_VERIFYPEERとともに使用します。CURLOPT_COOKIEHTTP リクエストにおける "Cookie: " ヘッダの内容。 クッキーが複数ある場合は、セミコロンとスペースで区切られる (例 "fruit=apple; colour=red") ことに注意しましょう。 CURLOPT_COOKIEFILEクッキーのデータを保持するファイルの名前。クッキーファイルは、 Netscape フォーマットあるいは HTTP ヘッダを単純にファイルにダンプしたものが使用可能です。 名前が空文字列の場合はクッキーを読み込みませんが、クッキーの処理は有効なままです。 CURLOPT_COOKIEJARハンドルを閉じる際 (curl_close のコール後など) に、 すべての内部クッキーを保存するファイルの名前。 CURLOPT_CUSTOMREQUESTHTTP リクエストで "GET" あるいは "HEAD" 以外に 使用するカスタムメソッド。これが有用なのは、"DELETE" やその他のあまり知られていない HTTP リクエストを実行する場合です。 使用可能な値は "GET"、 "POST"、"CONNECT" などです。 HTTP リクエストの内容をすべて指定するわけではありません。つまり、 "GET /index.html HTTP/1.0\r\n\r\n" のような 記述は間違いだということです。 注意:
使用しようとしているメソッドをサーバーがサポートしていることを 確かめるまで、これを使用しないでください。
CURLOPT_EGDSOCKETCURLOPT_RANDOM_FILEと似ていますが、 Entropy Gathering Daemon ソケットを使用してファイル名を生成する点が 違います。CURLOPT_ENCODING"Accept-Encoding: " ヘッダの内容。 これにより、応答のデコードを可能にします。サポートされる エンコーディングは "identity"、 "deflate" および "gzip" です。もし空文字列 "" が指定された場合、 サポートされるエンコーディングをすべて含むヘッダが送信されます。 cURL 7.10 で追加されました。 CURLOPT_FTPPORTFTP で "POST" を使用するための IP アドレスを取得する際に使用される値。 "POST" は、リモートサーバーに対してこちらが指定した IP アドレスに 接続するよう指示します。この値に設定できる内容は IP アドレス、ホスト名、 ネットワークインターフェイス名(Unix)、あるいは単に '-' を指定する ことでシステムのデフォルト IP アドレスを指定します。 CURLOPT_INTERFACE使用するネットワークインターフェイスの名前。 インターフェイス名、IP アドレスあるいはホスト名が指定可能です。 CURLOPT_KEYPASSWDCURLOPT_SSLKEYあるいはCURLOPT_SSH_PRIVATE_KEYFILE秘密鍵を使うときに必須となるパスワード。cURL 7.16.1 で追加されました。 CURLOPT_KRB4LEVELKRB4(Kerberos 4)セキュリティレベル。以下の値のいずれか (セキュリティの低い順です)が指定可能です。 "clear"、 "safe"、 "confidential"、 "private"。 文字列がこれらのどれでもなかった場合は、 "private" が使用されます。このオプションを NULLにすると KRB4 セキュリティを無効にします。現時点では、KRB4 セキュリティは FTP 転送にのみ使用可能です。CURLOPT_POSTFIELDSHTTP "POST" で送信するすべてのデータ。 ファイルを送信するには、ファイル名の先頭に @ をつけてフルパスを指定します。ファイルタイプを明示的に指定するには、ファイル名の後に ';type=mimetype' 形式で続けます。 このパラメータは 'para1=val1¶2=val2&...' のように url エンコードされた文字列形式で渡すこともできますし、 フィールド名をキー、データを値とする配列で渡すこともできます。 valueが配列の場合、 Content-Type ヘッダには multipart/form-data を設定します。 5.2.0 以降、このオプションに @ プレフィックスつきでファイルを渡したときはvalueが配列でなければならなくなりました。CURLOPT_PROXYリクエストを経由させる HTTP プロキシ。 CURLOPT_PROXYUSERPWDプロキシに接続するためのユーザー名とパスワード。 "[username]:[password]" 形式で指定します。 CURLOPT_RANDOM_FILE使用するファイル名を、SSL の乱数生成器を使用して作成します。 CURLOPT_RANGE取得するデータの範囲を "X-Y" 形式で指定します。X あるいは Y は省略可能です。 HTTP 転送では、いくつかの範囲をカンマで区切った "X-Y,N-M" のような形式もサポートしています。 CURLOPT_REFERERHTTP リクエストで使用される "Referer: " ヘッダの内容。 CURLOPT_SSH_HOST_PUBLIC_KEY_MD532 桁の十六進文字列。この文字列は、リモートホストの公開鍵の 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_LISTSSL で使用する暗号のリスト。例えば RC4-SHA および TLSv1 が 使用可能です。 CURLOPT_SSLCERTPEM フォーマットの証明書を含むファイルの名前。 CURLOPT_SSLCERTPASSWDCURLOPT_SSLCERT証明書を使用する際に必要なパスワード。CURLOPT_SSLCERTTYPE証明書の形式。サポートされるフォーマットは "PEM"(デフォルト)、"DER" および "ENG" です。 cURL 7.9.3 で追加されました。 CURLOPT_SSLENGINECURLOPT_SSLKEYで指定した SSL 秘密鍵の 暗号化エンジンの ID 。CURLOPT_SSLENGINE_DEFAULT非対称暗号化で使用する暗号化エンジンの ID 。 CURLOPT_SSLKEYSSL 秘密鍵を含むファイルの名前。 CURLOPT_SSLKEYPASSWDCURLOPT_SSLKEYで指定した SSL 秘密鍵を 使用するために必要なパスワード。注意:
このオプションには重要なパスワードが含まれます。PHP スクリプトを 安全な状態におくことを忘れないでください。
CURLOPT_SSLKEYTYPECURLOPT_SSLKEYで指定した SSL 秘密鍵の 形式。サポートされる型は以下のとおりです。 "PEM"(デフォルト)、"DER" および "ENG" 。CURLOPT_URL取得する URL 。 curl_init() でセッションを 初期化する際に指定することも可能です。 CURLOPT_USERAGENTHTTP リクエストで使用される "User-Agent: " ヘッダの内容。 CURLOPT_USERPWD接続に使用するユーザー名とパスワード。 "[username]:[password]" 形式で指定します。 valueには、optionの以下の値に関して 配列を指定する必要があります。オプション valueへの設定値注記 CURLOPT_HTTP200ALIASESエラーではなく正常な応答として扱われる、HTTP 200 レスポンスの配列。 cURL 7.10.3 で追加されました。 CURLOPT_HTTPHEADER設定する HTTP ヘッダフィールドの配列。 array('Content-type: text/plain', 'Content-length: 100')形式。CURLOPT_POSTQUOTEFTP リクエストの実行後に、サーバー上で実行する FTP コマンドの配列。 CURLOPT_QUOTEFTP リクエストの前にサーバー上で実行する FTP コマンドの配列。 valueはストリームリソース(例えば fopen() が作成するもの)であり、以下のoptionパラメータに設定します。オプション valueに設定する内容CURLOPT_FILE転送内容が書き込まれるファイル。デフォルトは STDOUT (ブラウザウィンドウ)。 CURLOPT_INFILEアップロード時に転送内容を読み込むファイル。 CURLOPT_STDERRSTDERR の代わりにエラーを出力する場所。 CURLOPT_WRITEHEADER転送のヘッダ部分が書き込まれるファイル。 valueには、optionの以下の値に関して 有効なコールバック関数の名前を指定する必要があります。オプション valueへの設定値CURLOPT_HEADERFUNCTIONコールバック関数の名前で、このコールバック関数は 2 つの引数を とります。最初のパラメータは CURL リソースで、2 番目は書き込む ヘッダデータの文字列です。このコールバック関数を使用するにあたり、 ヘッダデータを書き込む処理を実装するのはあなたの役目となります。 書き込んだデータのバイト数を返します。 CURLOPT_PASSWDFUNCTIONコールバック関数の名前で、このコールバック関数は 3 つの引数を とります。最初のパラメータは CURL リソースで、2 番目はパスワード プロンプトの文字列、そして 3 番目はパスワードの最大長です。 入力されたパスワードを文字列で返します。 CURLOPT_PROGRESSFUNCTIONコールバック関数の名前で、このコールバック関数は 3 つの引数をとります。 最初のパラメータは cURL リソースで、2 番目はファイル記述子リソース、 そして 3 番目は長さです。データを文字列で返します。 CURLOPT_READFUNCTIONコールバック関数の名前で、このコールバック関数は 3 つの引数を とります。最初のパラメータは cURL リソースで、2 番目は CURLOPT_INFILEで cURL に渡したストリームリソース、 そして最後が読み込むデータの最大量です。 コールバック関数は、要求したデータ量以下の長さの文字列を返さなければなりません。 一般的には、渡されたストリームリソースから読み込んだデータを返します。 EOF を伝えるには空文字列を返さなければなりません。CURLOPT_WRITEFUNCTIONコールバック関数の名前で、このコールバック関数は 2 つの引数を とります。最初のパラメータは cURL リソースで、2 番目は書き込む データの文字列です。データの保存には、 このコールバック関数を使わなければなりません。 書き込んだデータの正確なバイト数を返す必要があります。 返さなければ、エラーで転送が異常終了します。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。
変更履歴
| バージョン | 説明 |
|---|---|
| 5.2.10 |
CURLOPT_PROTOCOLS および
CURLOPT_REDIR_PROTOCOLS
が追加されました。
|
| 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($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
// URL の内容を取得し、ブラウザに渡します
curl_exec($ch);
// cURL リソースを閉じ、システムリソースを開放します
curl_close($ch);
?>
例2 ファイルのアップロード
<?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に渡すと、データを multipart/form-data でエンコードします。 一方 URL エンコードされた文字列を渡すと、データを application/x-www-form-urlencoded でエンコードします。