|
|
XVII. CURL, Client URL Library Functions
PHP supports libcurl, a library created by Daniel Stenberg, that
allows you to connect and communicate to many different types of
servers with many different types of protocols. libcurl currently
supports the http, https, ftp, gopher, telnet, dict, file, and
ldap protocols. libcurl also supports HTTPS certificates, HTTP
POST, HTTP PUT, FTP uploading (this can also be done with PHP's
ftp extension), HTTP form based upload, proxies, cookies, and
user+password authentication.
These functions have been added in PHP 4.0.2.
In order to use PHP's CURL functions you need to install the libcurl package. PHP requires that you use
libcurl 7.0.2-beta or higher. In PHP 4.2.3, you will need
libcurl version 7.9.0 or higher. From PHP 4.3.0, you will need a libcurl
version that's 7.9.8 or higher. PHP 5.0.0 requires
a libcurl version 7.10.5 or greater.
To use PHP's CURL support you must also compile PHP --with-curl[=DIR] where DIR is the
location of the directory containing the lib and include
directories. In the "include" directory there should be a folder
named "curl" which should contain the easy.h and
curl.h files. There should be a file named
libcurl.a located in the "lib" directory. Beginning
with PHP 4.3.0 you can configure PHP to use CURL for URL streams
--with-curlwrappers.
Note to Win32 Users:
In order to enable this module on a Windows environment,
libeay32.dll and ssleay32.dll
must be present in your PATH.
You don't need libcurl.dll from the CURL site.
The constants below are defined by this extension, and
will only be available when the extension has either
been compiled into PHP or dynamically loaded at runtime.
- CURLOPT_AUTOREFERER
(integer)
Available since PHP 5.1.0
- CURLOPT_COOKIESESSION
(integer)
Available since PHP 5.1.0
- CURLOPT_DNS_USE_GLOBAL_CACHE
(integer)
- CURLOPT_DNS_CACHE_TIMEOUT
(integer)
- CURLOPT_FTPSSLAUTH
(integer)
Available since PHP 5.1.0
- CURLOPT_SSLENGINE_DEFAULT
(integer)
- CURLOPT_UNRESTRICTED_AUTH
(integer)
- CURLCLOSEPOLICY_LEAST_RECENTLY_USED
(integer)
- CURLCLOSEPOLICY_LEAST_TRAFFIC
(integer)
- CURLINFO_HEADER_OUT
(integer)
Available since PHP 6.0.0
- CURLINFO_PRETRANSFER_TIME
(integer)
- CURLINFO_SSL_VERIFYRESULT
(integer)
- CURLINFO_CONTENT_LENGTH_DOWNLOAD
(integer)
- CURLINFO_CONTENT_LENGTH_UPLOAD
(integer)
- CURLINFO_STARTTRANSFER_TIME
(integer)
- CURLE_UNSUPPORTED_PROTOCOL
(integer)
- CURLE_COULDNT_RESOLVE_PROXY
(integer)
- CURLE_COULDNT_RESOLVE_HOST
(integer)
- CURLE_FTP_WEIRD_SERVER_REPLY
(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_COULDNT_SET_BINARY
(integer)
- CURLE_FTP_COULDNT_RETR_FILE
(integer)
- CURLE_FTP_COULDNT_STOR_FILE
(integer)
- CURLE_OPERATION_TIMEOUTED
(integer)
- CURLE_FTP_COULDNT_SET_ASCII
(integer)
- CURLE_FTP_COULDNT_USE_REST
(integer)
- CURLE_FTP_COULDNT_GET_SIZE
(integer)
- CURLE_FTP_BAD_DOWNLOAD_RESUME
(integer)
- CURLE_FILE_COULDNT_READ_FILE
(integer)
- CURLE_ABORTED_BY_CALLBACK
(integer)
- CURLE_BAD_FUNCTION_ARGUMENT
(integer)
- CURLE_BAD_PASSWORD_ENTERED
(integer)
- CURLE_UNKNOWN_TELNET_OPTION
(integer)
- CURLE_TELNET_OPTION_SYNTAX
(integer)
- CURLE_SSL_PEER_CERTIFICATE
(integer)
- CURLE_SSL_ENGINE_NOTFOUND
(integer)
- CURLE_SSL_ENGINE_SETFAILED
(integer)
- CURLE_BAD_CONTENT_ENCODING
(integer)
- CURLFTPAUTH_DEFAULT
(integer)
Available since PHP 5.1.0
- CURLFTPAUTH_SSL
(integer)
Available since PHP 5.1.0
- CURLFTPAUTH_TLS
(integer)
Available since PHP 5.1.0
Once you've compiled PHP with CURL support, you can begin using
the CURL functions. The basic idea behind the CURL functions is
that you initialize a CURL session using the
curl_init(), then you can set all your
options for the transfer via the curl_setopt(),
then you can execute the session with the
curl_exec() and then you finish off
your session using the curl_close().
Here is an example that uses the CURL functions to fetch the
example.com homepage into a file:
Example 1. Using PHP's CURL module to fetch the example.com homepage <?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);
?> |
|
|
|
|