PHP マニュアル
前のページ |  | 次のページ

# XVIII. CURL, Client URL Library 関数

# 導入

PHP は、Daniel Stenbergにより開発されたライブラリlibcurl をサポー トします。このライブラリにより、多くの異なったプロトコルで様々なサー バーと接続し、通信することが可能になります。libcurl は現在 http, https, ftp, gopher, telnet, dict, file, ldap プロトコルをサ ポートしてします。libcurl は HTTPS 認証、HTTP POST、HTTP PUT、FTP アップロード(これはPHPのftp拡張機能でも実行可能です)、HTTPフォーム によるアップロード、プロキシ、クッキー、ユーザ名+パスワードによる 認証もサポートします。

これらの関数は、PHP 4.0.2で追加されました。

# 要件

PHP の CURL 関数を使用するためには、libcurl パッケージをインストールしておく必要があります。PHP は、 libcurl 7.0.2-beta 以降を必要とします。 PHP バージョン 4.2.3 以降、少なくとも libcurl バージョン 7.9.0 以降が必要となっています。 PHP 4.3.0 以降では、7.9.8 以降が必要です。 PHP 5.0.0 では、おそらく、libcurl 7.10.5 以降が必要となります。

# インストール手順

PHP の CURL サポート機能を使用するには、--with-curl[=DIR] を付けて PHP をコンパイル しておく必要があります。ただし、DIR は、ディレクトリ lib および include を有するディレクトリの場所となります。 ディレクトリ "include" には、"curl" という名前のフォルダがある 必要があり、そのフォルダにはファイル `easy.h` および `curl.h` がある必要が あります。`libcurl.a` という名前のファイルがディレクトリ "lib" にある必要があります。PHP 4.3.0 以降、URL ストリームで CURL を使用するよう PHP を 設定するために --with-curlwrappers を指定できます。

> Win32 ユーザへの注意: このモジュールを Windows 環境で使用可能とするには、 `libeay32.dll` および `ssleay32.dll` が PATH の通った場所に存在する必要があります。

# 定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

`CURLOPT_AUTOREFERER` (integer)

  PHP 5.1.0 以降で使用可能です。

`CURLOPT_COOKIESESSION` (integer)

  PHP 5.1.0 以降で使用可能です。

`CURLOPT_DNS_USE_GLOBAL_CACHE` (integer)

`CURLOPT_DNS_CACHE_TIMEOUT` (integer)

`CURLOPT_FTPSSLAUTH` (integer)

  PHP 5.1.0 以降で使用可能です。

`CURLOPT_PORT` (integer)

`CURLOPT_FILE` (integer)

`CURLOPT_INFILE` (integer)

`CURLOPT_INFILESIZE` (integer)

`CURLOPT_URL` (integer)

`CURLOPT_PROXY` (integer)

`CURLOPT_VERBOSE` (integer)

`CURLOPT_HEADER` (integer)

`CURLOPT_HTTPHEADER` (integer)

`CURLOPT_NOPROGRESS` (integer)

`CURLOPT_NOBODY` (integer)

`CURLOPT_FAILONERROR` (integer)

`CURLOPT_UPLOAD` (integer)

`CURLOPT_POST` (integer)

`CURLOPT_FTPLISTONLY` (integer)

`CURLOPT_FTPAPPEND` (integer)

`CURLOPT_NETRC` (integer)

`CURLOPT_FOLLOWLOCATION` (integer)

`CURLOPT_FTPASCII` (integer)

`CURLOPT_PUT` (integer)

`CURLOPT_MUTE` (integer)

`CURLOPT_USERPWD` (integer)

`CURLOPT_PROXYUSERPWD` (integer)

`CURLOPT_RANGE` (integer)

`CURLOPT_TIMEOUT` (integer)

`CURLOPT_POSTFIELDS` (integer)

`CURLOPT_REFERER` (integer)

`CURLOPT_USERAGENT` (integer)

`CURLOPT_FTPPORT` (integer)

`CURLOPT_FTP_USE_EPSV` (integer)

`CURLOPT_LOW_SPEED_LIMIT` (integer)

`CURLOPT_LOW_SPEED_TIME` (integer)

`CURLOPT_RESUME_FROM` (integer)

`CURLOPT_COOKIE` (integer)

`CURLOPT_SSLCERT` (integer)

`CURLOPT_SSLCERTPASSWD` (integer)

`CURLOPT_WRITEHEADER` (integer)

`CURLOPT_SSL_VERIFYHOST` (integer)

`CURLOPT_COOKIEFILE` (integer)

`CURLOPT_SSLVERSION` (integer)

`CURLOPT_TIMECONDITION` (integer)

`CURLOPT_TIMEVALUE` (integer)

`CURLOPT_CUSTOMREQUEST` (integer)

`CURLOPT_STDERR` (integer)

`CURLOPT_TRANSFERTEXT` (integer)

`CURLOPT_RETURNTRANSFER` (integer)

`CURLOPT_QUOTE` (integer)

`CURLOPT_POSTQUOTE` (integer)

`CURLOPT_INTERFACE` (integer)

`CURLOPT_KRB4LEVEL` (integer)

`CURLOPT_HTTPPROXYTUNNEL` (integer)

`CURLOPT_FILETIME` (integer)

`CURLOPT_WRITEFUNCTION` (integer)

`CURLOPT_READFUNCTION` (integer)

`CURLOPT_PASSWDFUNCTION` (integer)

`CURLOPT_HEADERFUNCTION` (integer)

`CURLOPT_MAXREDIRS` (integer)

`CURLOPT_MAXCONNECTS` (integer)

`CURLOPT_CLOSEPOLICY` (integer)

`CURLOPT_FRESH_CONNECT` (integer)

`CURLOPT_FORBID_REUSE` (integer)

`CURLOPT_RANDOM_FILE` (integer)

`CURLOPT_EGDSOCKET` (integer)

`CURLOPT_CONNECTTIMEOUT` (integer)

`CURLOPT_SSL_VERIFYPEER` (integer)

`CURLOPT_CAINFO` (integer)

`CURLOPT_CAPATH` (integer)

`CURLOPT_COOKIEJAR` (integer)

`CURLOPT_SSL_CIPHER_LIST` (integer)

`CURLOPT_BINARYTRANSFER` (integer)

`CURLOPT_NOSIGNAL` (integer)

`CURLOPT_PROXYTYPE` (integer)

`CURLOPT_BUFFERSIZE` (integer)

`CURLOPT_HTTPGET` (integer)

`CURLOPT_HTTP_VERSION` (integer)

`CURLOPT_SSLKEY` (integer)

`CURLOPT_SSLKEYTYPE` (integer)

`CURLOPT_SSLKEYPASSWD` (integer)

`CURLOPT_SSLENGINE` (integer)

`CURLOPT_SSLENGINE_DEFAULT` (integer)

`CURLOPT_SSLCERTTYPE` (integer)

`CURLOPT_CRLF` (integer)

`CURLOPT_ENCODING` (integer)

`CURLOPT_PROXYPORT` (integer)

`CURLOPT_UNRESTRICTED_AUTH` (integer)

`CURLOPT_FTP_USE_EPRT` (integer)

`CURLOPT_HTTP200ALIASES` (integer)

`CURLOPT_HTTPAUTH` (integer)

`CURLAUTH_BASIC` (integer)

`CURLAUTH_DIGEST` (integer)

`CURLAUTH_GSSNEGOTIATE` (integer)

`CURLAUTH_NTLM` (integer)

`CURLAUTH_ANY` (integer)

`CURLAUTH_ANYSAFE` (integer)

`CURLOPT_PROXYAUTH` (integer)

`CURLCLOSEPOLICY_LEAST_RECENTLY_USED` (integer)

`CURLCLOSEPOLICY_LEAST_TRAFFIC` (integer)

`CURLCLOSEPOLICY_SLOWEST` (integer)

`CURLCLOSEPOLICY_CALLBACK` (integer)

`CURLCLOSEPOLICY_OLDEST` (integer)

`CURLINFO_EFFECTIVE_URL` (integer)

`CURLINFO_HTTP_CODE` (integer)

`CURLINFO_HEADER_SIZE` (integer)

`CURLINFO_REQUEST_SIZE` (integer)

`CURLINFO_TOTAL_TIME` (integer)

`CURLINFO_NAMELOOKUP_TIME` (integer)

`CURLINFO_CONNECT_TIME` (integer)

`CURLINFO_PRETRANSFER_TIME` (integer)

`CURLINFO_SIZE_UPLOAD` (integer)

`CURLINFO_SIZE_DOWNLOAD` (integer)

`CURLINFO_SPEED_DOWNLOAD` (integer)

`CURLINFO_SPEED_UPLOAD` (integer)

`CURLINFO_FILETIME` (integer)

`CURLINFO_SSL_VERIFYRESULT` (integer)

`CURLINFO_CONTENT_LENGTH_DOWNLOAD` (integer)

`CURLINFO_CONTENT_LENGTH_UPLOAD` (integer)

`CURLINFO_STARTTRANSFER_TIME` (integer)

`CURLINFO_CONTENT_TYPE` (integer)

`CURLINFO_REDIRECT_TIME` (integer)

`CURLINFO_REDIRECT_COUNT` (integer)

`CURL_VERSION_IPV6` (integer)

`CURL_VERSION_KERBEROS4` (integer)

`CURL_VERSION_SSL` (integer)

`CURL_VERSION_LIBZ` (integer)

`CURLVERSION_NOW` (integer)

`CURLE_OK` (integer)

`CURLE_UNSUPPORTED_PROTOCOL` (integer)

`CURLE_FAILED_INIT` (integer)

`CURLE_URL_MALFORMAT` (integer)

`CURLE_URL_MALFORMAT_USER` (integer)

`CURLE_COULDNT_RESOLVE_PROXY` (integer)

`CURLE_COULDNT_RESOLVE_HOST` (integer)

`CURLE_COULDNT_CONNECT` (integer)

`CURLE_FTP_WEIRD_SERVER_REPLY` (integer)

`CURLE_FTP_ACCESS_DENIED` (integer)

`CURLE_FTP_USER_PASSWORD_INCORRECT` (integer)

`CURLE_FTP_WEIRD_PASS_REPLY` (integer)

`CURLE_FTP_WEIRD_USER_REPLY` (integer)

`CURLE_FTP_WEIRD_PASV_REPLY` (integer)

`CURLE_FTP_WEIRD_227_FORMAT` (integer)

`CURLE_FTP_CANT_GET_HOST` (integer)

`CURLE_FTP_CANT_RECONNECT` (integer)

`CURLE_FTP_COULDNT_SET_BINARY` (integer)

`CURLE_PARTIAL_FILE` (integer)

`CURLE_FTP_COULDNT_RETR_FILE` (integer)

`CURLE_FTP_WRITE_ERROR` (integer)

`CURLE_FTP_QUOTE_ERROR` (integer)

`CURLE_HTTP_NOT_FOUND` (integer)

`CURLE_WRITE_ERROR` (integer)

`CURLE_MALFORMAT_USER` (integer)

`CURLE_FTP_COULDNT_STOR_FILE` (integer)

`CURLE_READ_ERROR` (integer)

`CURLE_OUT_OF_MEMORY` (integer)

`CURLE_OPERATION_TIMEOUTED` (integer)

`CURLE_FTP_COULDNT_SET_ASCII` (integer)

`CURLE_FTP_PORT_FAILED` (integer)

`CURLE_FTP_COULDNT_USE_REST` (integer)

`CURLE_FTP_COULDNT_GET_SIZE` (integer)

`CURLE_HTTP_RANGE_ERROR` (integer)

`CURLE_HTTP_POST_ERROR` (integer)

`CURLE_SSL_CONNECT_ERROR` (integer)

`CURLE_FTP_BAD_DOWNLOAD_RESUME` (integer)

`CURLE_FILE_COULDNT_READ_FILE` (integer)

`CURLE_LDAP_CANNOT_BIND` (integer)

`CURLE_LDAP_SEARCH_FAILED` (integer)

`CURLE_LIBRARY_NOT_FOUND` (integer)

`CURLE_FUNCTION_NOT_FOUND` (integer)

`CURLE_ABORTED_BY_CALLBACK` (integer)

`CURLE_BAD_FUNCTION_ARGUMENT` (integer)

`CURLE_BAD_CALLING_ORDER` (integer)

`CURLE_HTTP_PORT_FAILED` (integer)

`CURLE_BAD_PASSWORD_ENTERED` (integer)

`CURLE_TOO_MANY_REDIRECTS` (integer)

`CURLE_UNKNOWN_TELNET_OPTION` (integer)

`CURLE_TELNET_OPTION_SYNTAX` (integer)

`CURLE_OBSOLETE` (integer)

`CURLE_SSL_PEER_CERTIFICATE` (integer)

`CURLE_GOT_NOTHING` (integer)

`CURLE_SSL_ENGINE_NOTFOUND` (integer)

`CURLE_SSL_ENGINE_SETFAILED` (integer)

`CURLE_SEND_ERROR` (integer)

`CURLE_RECV_ERROR` (integer)

`CURLE_SHARE_IN_USE` (integer)

`CURLE_SSL_CERTPROBLEM` (integer)

`CURLE_SSL_CIPHER` (integer)

`CURLE_SSL_CACERT` (integer)

`CURLE_BAD_CONTENT_ENCODING` (integer)

`CURLE_LDAP_INVALID_URL` (integer)

`CURLE_FILESIZE_EXCEEDED` (integer)

`CURLE_FTP_SSL_FAILED` (integer)

`CURLFTPAUTH_DEFAULT` (integer)

  PHP 5.1.0 以降で使用可能です。

`CURLFTPAUTH_SSL` (integer)

  PHP 5.1.0 以降で使用可能です。

`CURLFTPAUTH_TLS` (integer)

  PHP 5.1.0 以降で使用可能です。

`CURLPROXY_HTTP` (integer)

`CURLPROXY_SOCKS5` (integer)

`CURL_NETRC_OPTIONAL` (integer)

`CURL_NETRC_IGNORED` (integer)

`CURL_NETRC_REQUIRED` (integer)

`CURL_HTTP_VERSION_NONE` (integer)

`CURL_HTTP_VERSION_1_0` (integer)

`CURL_HTTP_VERSION_1_1` (integer)

`CURLM_CALL_MULTI_PERFORM` (integer)

`CURLM_OK` (integer)

`CURLM_BAD_HANDLE` (integer)

`CURLM_BAD_EASY_HANDLE` (integer)

`CURLM_OUT_OF_MEMORY` (integer)

`CURLM_INTERNAL_ERROR` (integer)

`CURLMSG_DONE` (integer)

# 例

PHPをCURLサポート機能付きでコンパイルした場合、curl関数を使用可能 となります。CURL関数の基本的な使用法は、 curl_init()によりCURLセッションを初期化、 curl_setopt()により転送時のオプションを設定、 続いてcurl_exec()により転送を実行し、 curl_close()によりセッションを終了するというも のになります。CURL関数を使用してPHPホームページをファイルに取得す る例を示します。

例 1. PHPのCURLモジュールを使用してexample.comのホームページを取得する
`<?php $ch = curl_init("http://www.example.com/"); $fp = fopen("example_homepage.txt", "w"); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); ?>`

前のページ | ホーム | 次のページ
ctype_xdigit | 上に戻る | curl_close