18.3. Opening a Remote File
Problem
You want to open a file that’s accessible to you via HTTP or FTP.
Solution
Pass the file’s URL to fopen( )
:
$fh = fopen('http://www.example.com/robots.txt','r') or die($php_errormsg);
Discussion
When fopen( )
is passed a filename that begins
with http://, it retrieves the given page with
an HTTP/1.0
GET
request (although a Host
: header is also passed
along to deal with virtual hosts). Only the body of the reply can be
accessed using the file handle, not the headers. Files can be read,
not written, via HTTP.
When fopen( )
is passed a filename that begins
with ftp://, it returns a pointer to the
specified file, obtained via passive mode FTP. You can open files via
FTP for either reading or writing, but not both.
To open URLs that require a username and a password with
fopen( )
, embed the
authentication information in
the URL like this:
$fh = fopen('ftp://username:password@ftp.example.com/pub/Index','r'); $fh = fopen('http://username:password@www.example.com/robots.txt','r');
Opening remote files with fopen( )
is implemented
via a PHP feature called the URL fopen
wrapper
. It’s enabled by
default but is disabled by setting allow_url_fopen
to off
in your php.ini or web
server configuration file. If you can’t open remote
files with fopen( )
, check your server
configuration.
See Also
Section 11.2 through Section 11.6, which discuss retrieving URLs; documentation
on fopen( )
at
http://www.php.net/fopen and on the URL fopen
wrapper feature at http://www.php.net/features.remote-files ...
Get PHP Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.