PHP的PHP://
介绍
在PHP://包装enableaccess各种I/O流。这包括标准输入,输出和错误流。在内存中,通过php://协议访问磁盘支持的和过滤的流。
标准流
php://stdin,php://stdout和 php://stderr分别允许直接访问标准输入流设备,标准输出流和错误流到PHP进程。预定义常量STDIN,STDOUT和STDERR分别表示这些流。
php://输入
php://input允许对HTTP请求正文中包含的原始数据进行只读访问。请注意,$HTTP_POST_RAW-DATA变量(现已弃用)中提供了相同的数据。但是,php://input不适用于enctype属性设置为 multipart/form-data
php://输出
该包装器代表只写处理,允许缓冲机制,类似于print和echo语句。
php://fd
可通过此包装访问文件描述符。标准流STDIN,STDOUT和STDERR被分配了文件描述符1,2和3。其他每个流都被分配了增量文件描述符。因此,php://fd/5引用文件描述符5
php://内存
这是一个读/写流,允许将数据临时存储在内存中。在PHP://临时包装是相似的。但是,在后者的情况下,数据存储在临时文件中而不是内存中。
php://过滤器
此包装器允许在打开流时将过滤器应用于流。过滤器对于readfile()
,file_get_contents()和file()
函数特别有用。
例子
在以下示例中,从 php://stdin读取控制台输入,并使用php://stdout显示输出
<?php $file=fopen("php://stdin","r"); $x=fread($file,10); echo $x; $out=fopen("php://stdout","w"); fwrite($out, $x); fclose($file); ?>
php://input流包装器允许从HTTP请求中获取原始数据。在以下示例中,HTML表单使用POST方法将数据发布到PHP脚本
<html> <body> <form action="testscript.php" method="POST"> <input type="text" name="name"> <input type="text" name="age"> <input type ="submit" value="submit"> </form> </body> </html>
用于检索原始HTTP数据的PHP脚本如下-
<?php $json = file_get_contents("php://input"); $data = json_decode($json); print_r($json); ?>