downloads | documentation | faq | getting help | mailing lists | reporting bugs | sites | links | my 
search for in the  
<List of Resource TypesFTP and FTPS>
view the version of this page
Last updated: Thu, 21 Aug 2003

Appendix I. List of Supported Protocols/Wrappers

The following is a list of the various URL style protocols that PHP has built-in for use with the filesystem functions such as fopen() and copy(). In addition to these wrappers, as of PHP 4.3.0, you can write your own wrappers using PHP script and stream_register_wrapper().


PHP 3, PHP 4. https:// since PHP 4.3.0





Allows read-only access to files/resources via HTTP 1.0, using the HTTP GET method. A Host: header is sent with the request to handle name-based virtual hosts. If you have configured a user_agent string using your ini file or the stream context, it will also be included in the request.

Redirects have been supported since PHP 4.0.5; if you are using an earlier version you will need to include trailing slashes in your URLs. If it's important to know the url of the resource where your document came from (after all redirects have been processed), you'll need to process the series of response headers returned by the stream.

$url = '';

$fp = fopen($url, 'r');

/* Prior to PHP 4.3.0 use $http_response_header 
   instead of stream_get_meta_data() */
foreach(stream_get_meta_data($fp) as $response) {

  /* Were we redirected? */
  if (substr(strtolower($response), 0, 10) == 'location: ') {
    /* update $url with where we were redirected to */
    $url = substr($response, 10);



The stream allows access to the body of the resource; the headers are stored in the $http_response_header variable. Since PHP 4.3.0, the headers are available using stream_get_meta_data().

HTTP connections are read-only; you cannot write data or copy files to an HTTP resource.

Note: HTTPS is supported starting from PHP 4.3.0, if you have compiled in support for OpenSSL.

Table I-1. Wrapper Summary

Restricted by allow_url_fopen.Yes
Allows ReadingYes
Allows WritingNo
Allows AppendingNo
Allows Simultaneous Reading and WritingN/A
Supports stat()No
Supports unlink()No

Table I-2. Context options (as of PHP 5.0.0)

method GET, POST, or any other HTTP method supported by the remote server. GET
headerAdditional headers to be sent during request. Values in this option will override other values (such as User-agent:, Host:, and Authentication:).  
user_agentValue to send with User-Agent: header. This value will only be used if user-agent is not specified in the header context option above. php.ini setting: user_agent
content Additional data to be sent after the headers. Typically used with POST or PUT requests.  

Underlying socket stream context options: Additional context options may be supported by the underlying transport For http:// streams, refer to context options for the tcp:// transport. For https:// streams, refer to context options for the ssl:// transport.

add a note add a note User Contributed Notes
List of Supported Protocols/Wrappers
derek at openflows dot org
28-Oct-2003 06:17
I just wanted to note that as of php 4.3.3, there is a bug in the SSL-specific code for mechanisms like fread, fopen, and readfile.  The symptom of this bug is an extra warning message upon attempting to read a file over https.  The warning message indicates: "SSL: Fatal protocol error".

There is a patch which fixes this bug.  For more details, please see:
spam at vrana dot cz
16-Oct-2003 05:28
Both php://input and $HTTP_RAW_POST_DATA are empty after submiting <form method="post" enctype="multipart/form-data">. As say, it's not a bug, it's a feature...
sam at bigwig dot net
15-Aug-2003 10:02
[ Editor's Note: There is a way to know.  All response headers (from both the final responding server and intermediate redirecters) can be found in $http_response_header or stream_get_meta_data() as described above. ]

If you open an HTTP url and the server issues a Location style redirect, the redirected contents will be read but you can't find out that this has happened.

So if you then parse the returned html and try and rationalise relative URLs you could get it wrong.
manuzhai (AT) php (DOT) net
08-Jan-2003 03:58
To get the https wrapper working on Windows, you need to replace your php4ts.dll with the one provided at This is instead of using the php_openssl.dll, so be sure to comment this extension in your php.ini.

<List of Resource TypesFTP and FTPS>
 Last updated: Thu, 21 Aug 2003
show source | credits | sitemap | mirror sites 
Copyright © 2001-2003 The PHP Group
All rights reserved.
This mirror generously provided by:
Last updated: Sat 01 Nov 2003 04:13:36 EST EST