$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
in
$objInputStream = fopen("php://input", "r");
$objTempStream = fopen("php://temp", "w+b");
他们做了什么?
答案 0 :(得分:9)
php://input
是一个只读流,允许您从请求正文中读取原始数据。对于POST请求,它最好是$HTTP_RAW_POST_DATA
,因为它不依赖于特殊的php.ini指令。此外,对于默认情况下未填充$HTTP_RAW_POST_DATA
的情况,它可能是激活always_populate_raw_post_data
的内存密集型替代方案。 php://输入不适用于enctype="multipart/form-data"
。
答案 1 :(得分:6)
php://temp
将数据存储在临时文件中,该文件仅在脚本执行期间可访问。它是一个真实的文件,但是一旦脚本终止就会被清除,而不是用fopen()
打开的真实文件,它将在文件系统上保留。
php://input
用于读取原始HTTP请求正文,而不会抽象出$_POST
和$_SERVER
个变量。当服务器将其传递给PHP解释器时,php://input
流将允许访问整个HTTP请求。
答案 2 :(得分:3)
这些是stream wrappers,允许您从各种流中读取。流的读取和写入以与文件相同的方式执行(可能存在某些限制,例如并非每个流包装器都支持fseek)。
php://input
使您可以访问原始HTTP数据(如果服务器配置为预填充,则可在$ HTTP_RAW_POST_DATA中使用)。最好 - 阅读文档中的相应部分