开发者

php://input - what does it do in fopen()?

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

I can understand this that /home/rasmus/file.txt and /home开发者_Python百科/rasmus/file.gif are the file path.

But what these mean:

php://input
php://temp

in

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

What do they do?


php://input is a read-only stream that allows you to read raw data from the request body. In the case of POST requests, it is preferable to $HTTP_RAW_POST_DATA as it does not depend on special php.ini directives. Moreover, for those cases where $HTTP_RAW_POST_DATAis not populated by default, it is a potentially less memory intensive alternative to activating always_populate_raw_post_data. php://input is not available with enctype="multipart/form-data".

Check out the manual: http://php.net/manual/en/wrappers.php.php


php://temp stores data in a temporary file which is only accessible for the duration of the script's execution. It is a real file, but is cleaned up as soon as the script terminates unlike a true file opened with fopen(), that will persist on the filesystem.

php://input is used for reading the raw HTTP request body, without having the $_POST and $_SERVER variables abstracted out. The php://input stream would give access to the entire HTTP request as the server handed it to the PHP interpreter.


Those are stream wrappers and allow you to read from various streams. The reading and writting to stream is performed in the same way as with the file (some limitation can exists, for example not every stream wrapper supports fseek). php://input gives you access to the raw HTTP data (it's available in $HTTP_RAW_POST_DATA if server is configured to prepopulate it). Best - read the corresponding section in the documentation

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜