PHP input/output streams
- php://stdin
- php://stdout
- php://stderr
- php://output
- php://input
- php://filter (available since PHP 5.0.0)
- php://memory (available since PHP 5.1.0)
- php://temp (available since PHP 5.1.0)
php://stdin, php://stdout
and php://stderr allow access to
the corresponding input or output stream of the PHP process. The stream
references a duplicate file descriptor, so if you open
php://stdin and later close it, you close only your
copy of the descriptor--the actual stream referenced by
STDIN is unaffected. Note that PHP exhibited buggy
behavior in this regard until PHP 5.2.1. It is recommended that you simply
use the constants STDIN, STDOUT
and STDERR instead of manually opening streams using
these wrappers.
php://output allows you to write to the
output buffer mechanism in the same way as
print() and echo().
php://input allows you to read raw POST data.
It is a less memory intensive alternative to
$HTTP_RAW_POST_DATA and does not need any
special php.ini directives.
php://input is not available with
enctype="multipart/form-data".
php://stdin and
php://input are read-only, whereas
php://stdout,
php://stderr and
php://output are write-only.
php://filter is a kind of meta-wrapper designed
to permit the application of filters to a stream at the time of
opening. This is useful with all-in-one file functions such as
readfile(), file(), and
file_get_contents() where there is otherwise
no opportunity to apply a filter to the stream prior the contents
being read.
The php://filter target takes the following
'parameters' as parts of its 'path'.
-
/resource=<stream to be filtered>
(required) This parameter must be located at
the end of your php://filter specification and
should point to the stream which you want filtered.
-
/read=<filter list to apply to read chain>
(optional) This parameter takes one or more
filternames separated by the pipe character |.
-
/write=<filter list to apply to write chain>
(optional) This parameter takes one or more
filternames separated by the pipe character |.
-
/<filter list to apply to both chains>
(optional) Any filter lists which are not
prefixed specifically by read= or
write= will be applied to both the read and
write chains (as appropriate).
The php://memory wrapper stores the data in the
memory. php://temp behaves similarly, but uses a
temporary file for storing the data when a certain memory limit is reached
(the default is 2 MB).
The php://temp wrapper takes the following
'parameters' as parts of its 'path':
Wrapper Summary (For php://filter,
refer to summary of wrapper being filtered.)
Attribute |
Supported |
Restricted by allow_url_fopen |
No |
Restricted by allow_url_include |
php://input,
php://stdin,
php://memory and
php://temp only.
|
Allows Reading |
php://stdin,
php://input,
php://memory and
php://temp only.
|
Allows Writing |
php://stdout,
php://stderr,
php://output,
php://memory and
php://temp only.
|
Allows Appending |
php://stdout,
php://stderr,
php://output,
php://memory and
php://temp only. (Equivalent to writing)
|
Allows Simultaneous Reading and Writing |
php://memory and
php://temp only.
|
Supports stat() |
php://memory and
php://temp only.
|
Supports unlink() |
No |
Supports rename() |
No |
Supports mkdir() |
No |
Supports rmdir() |
No |