php://ввод - что он делает в 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");
Что они делают?
3 answers
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
php://temp
хранит данные во временном файле, доступном только на время выполнения скрипта. Это реальный файл, но он очищается, как только скрипт завершается, в отличие от настоящего файла, открытого с помощью fopen()
, который будет сохраняться в файловой системе.
php://input
используется для чтения необработанного тела HTTP-запроса без абстрагирования переменных $_POST
и $_SERVER
. Поток php://input
предоставит доступ ко всему HTTP-запросу, когда сервер передаст его PHP переводчик.
Это обертки потоков , которые позволяют вам читать из различных потоков. Чтение и запись в поток выполняются так же, как и с файлом (могут существовать некоторые ограничения, например, не каждая оболочка потока поддерживает fseek).
php://input
предоставляет вам доступ к необработанным данным HTTP (они доступны в $HTTP_RAW_POST_DATA, если сервер настроен на их предварительное заполнение). Лучше всего прочитать соответствующий раздел в документации