PHP的PHP://

介绍

PHP://包装enableaccess各种I / O流。这包括标准输入,输出和错误流。在内存中,通过php://协议访问磁盘支持的和过滤的流。

标准流

php:// stdinphp:// stdout php:// stderr分别允许直接访问标准输入流设备,标准输出流和错误流到PHP进程。预定义常量STDINSTDOUTSTDERR分别表示这些流。

php://输入

php:// input允许对HTTP请求正文中包含的原始数据进行只读访问。请注意,$HTTP_POST_RAW-DATA变量(现已弃用)中提供了相同的数据。但是,php:// input不适用于enctype属性设置为 multipart / form-data

php://输出

该包装器代表只写处理,允许缓冲机制,类似于printecho语句。

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);
?>