Php://input - что он делает в fopen()?

$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");

Я могу понять, что /home/rasmus/file.txt и /home/rasmus/file.gif - путь к файлу.

Но что они означают:

php://input
php://temp

в

$objInputStream = fopen("php://input", "r");
$objTempStream = fopen("php://temp", "w+b");

Что они делают?

Ответ 1

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

Ознакомьтесь с руководством: http://php.net/manual/en/wrappers.php.php

Ответ 2

php://temp хранит данные во временном файле, который доступен только для продолжительности выполнения script. Это реальный файл, но очищается, как только script заканчивается в отличие от истинного файла, открытого с помощью fopen(), который будет сохраняться в файловой системе.

php://input используется для чтения тела необработанного HTTP-запроса без учета абстрагированных переменных $_POST и $_SERVER. Поток php://input предоставил бы доступ ко всему HTTP-запросу, поскольку сервер передал его интерпретатору PHP.

Ответ 3

Это обтекатели потоков и позволяют читать из разных потоков. Чтение и запись в поток выполняется так же, как и с файлом (может существовать некоторое ограничение, например, не каждая обтекающая строка поддерживает fseek). php://input предоставляет вам доступ к необработанным HTTP-данным (он доступен в $HTTP_RAW_POST_DATA, если сервер настроен на предварительное заполнение). Лучшее - прочитайте соответствующий раздел в документации