php://

php:// — Доступ к различным потокам ввода-вывода


Описание

PHP предоставляет несколько разнообразных потоков ввода-вывода, которые позволяют получить доступ к собственным потокам ввода-вывода PHP,к дескрипторам стандартного ввода, вывода и потока ошибок, к временным файловым потокам в памяти и на диске, и фильтрам, которые могут манипулировать другими файловыми ресурсами по мере их считывания или записи.

php://stdin, php://stdout and php://stderr

php://stdin, php://stdout и php://stderr позволяют получить прямой доступ к соответствующим потокам ввода или вывода процесса PHP. Поток указывает на копию файлового дескриптора, таким образом, если вы откроете php://stdin и потом закроете его, вы закроете только вашу копию дескриптора. Актуальный поток, на который ссылается STDIN остается неизменным. Обратите внимание, что PHP демонстрировал ошибочное поведение в этом отношении до версии PHP 5.2.1. Рекомендуется просто использовать константы STDIN, STDOUT и STDERR вместо ручного открытия потоков, используя эти обертки.

Поток php://stdin предназначен только для чтения, тогда как php://stdout и php://stderr предназначены только для записи.


php://input

php://input является потоком только для чтения, который позволяет вам читать необработанные данные из тела запроса. В случае POST-запросов предпочтительней использовать php://input вместо $HTTP_RAW_POST_DATA, так как этот метод не зависит от специальных php.ini директив. Кроме того, в тех случаях, где $HTTP_RAW_POST_DATA не заполняется по умолчанию, это потенциально менее затратно для памяти, чем активация директивы always_populate_raw_post_data. php://input не доступен с типом содержимого enctype="multipart/form-data".

Замечание: Поток, открытый с php://input может быть прочтен только один раз. Поток не поддерживает операции поиска. Тем не менее, в зависимости от реализации SAPI интерфейса, может быть возможно открыть другой поток php://input и повторить чтение. Это возможно только если тело запроса заранее сохраняется. Это типично для случая с POST-запросом, но не для других методов запросов, таких как PUT или PROPFIND.


php://output

php://output является потоком только для записи, который позволяет вам записать данные в выходной буфер аналогично как это делают функции print() и echo().


php://fd

php://fd предоставляет прямой доступ к указанному файловому дескриптору. Например, php://fd/3 относится к файловому дескриптору 3.


php://memory и php://temp

php://memory и php://temp являются потоками для чтения/записи и позволяют сохранять временные данные в файлоподобной обертке. Единственная разница между ними заключается в том, что php://memory будет всегда хранить данные в оперативной памяти, тогда как php://temp будет использовать временный файл в том случае, когда объем хранимой информации достигнет заданный лимит (по умолчанию составляет 2 Мб). Расположение этого временного файла определяется аналогично функции sys_get_temp_dir().

Размер лимита для php://temp может устанавливаться путем добавления /maxmemory:NN, где NN - это максимальный размер данных в байтах для хранения в памяти перед испольхованием временного файла.


php://filter

php://filter - это вид мета-обертки, предназначенный для разрешения применения фильтров к потоку во время открытия. Это полезно для функционально полных файловых функций таких, как readfile(), file(), и file_get_contents() там, где иначе не было возможности применить фильтр к потоку до того, как содержимое будет прочитано.

Поток php://filter принимает следующие параметры как часть своего пути. Пожалуйста, ознакомьтесь с примерами и особенностями при использовании этих параметров.

Параметры для php://filter Название Описание resource=<поток для фильтрации> Этот параметр является необходимым. Он указывает потоку, что его необходимо отфильтровать. read=<список фильтров для применения к цепочке чтения> Этот параметр является необязательным. Одно или более имен фильтров может быть указано здесь, разделенные вертикальной чертой (|). write=<список фильтров для применения к цепочке записи> Этот параметр является необязательным. Одно или более имен фильтров может быть указано здесь, разделенные вертикальной чертой (|). <список фильтров для применения к обеим цепочкам чтения и записи> Любой список фильтров, которые используются без префиксов read= или write=, будет применен к обоим потокам на чтение и на запись при необходимости.


Опции

Основная информация (для php://filter смотрите информацию по обертке, которая подвергается фильтрации) Атрибут Поддержка Ограничение по allow_url_fopen Нет Ограничение по allow_url_include только php://input, php://stdin, php://memory и php://temp. Чтение только php://stdin, php://input, php://fd, php://memory и php://temp. Запись только php://stdout, php://stderr, php://output, php://fd, php://memory и php://temp. Добавление только php://stdout, php://stderr, php://output, php://fd, php://memory и php://temp. (Эквивалентно записи) Одновременное чтение и запись только php://fd, php://memory и php://temp. Поддержка stat() только php://memory и php://temp. Поддержка unlink() Нет Поддержка rename() Нет Поддержка mkdir() Нет Поддержка rmdir() Нет Поддержка stream_select() только php://stdin, php://stdout, php://stderr, php://fd и php://temp.




Смотрите также:
Описание на ru2.php.net
Описание на php.ru