php://输入 - 它在fopen()中做了什么?

lau*_*kok 12 php fopen

$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
Run Code Online (Sandbox Code Playgroud)

我能理解这一点,/home/rasmus/file.txt并且/home/rasmus/file.gif是文件路径.

但这些意味着什么:

php://input
php://temp
Run Code Online (Sandbox Code Playgroud)

$objInputStream = fopen("php://input", "r");
$objTempStream = fopen("php://temp", "w+b");
Run Code Online (Sandbox Code Playgroud)

他们在做什么?

adr*_*a84 9

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

  • 最后一句话不再准确。设置 [`enable_post_data_reading = 0`](http://php.net/manual/en/ini.core.php#ini.enable-post-data-reading) 将禁用 `php://input` 的解析流到“$_FILES”,使“php://input”对于多部分请求可读。 (2认同)

Mic*_*ski 6

php://temp将数据存储在临时文件中,该文件仅在脚本执行期间可访问.它是一个真实的文件,但是一旦脚本终止就会被清理,而不像打开的真实文件那样fopen(),它会在文件系统上持久存在.

php://input用于读取原始HTTP请求主体,而不必抽象出变量$_POST$_SERVER变量.当php://input服务器将其传递给PHP解释器时,流将提供对整个HTTP请求的访问.

  • 不完全正确:*"一旦存储的数据量达到预定义的限制(默认值为2 MB),"php:// temp将使用临时文件."* (3认同)