PHP php://


简介

php:// 包装器允许访问各种 I/O 流。这包括标准输入、输出和错误流。内存中、磁盘支持和过滤流也可以使用 php:// 协议访问。

标准流

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

php://input

php://input 允许只读访问 HTTP 请求正文中包含的原始数据。请注意,相同的数据也可在 $HTTP_POST_RAW-DATA 变量中获得(该变量现已弃用)。但是,如果 enctype 属性设置为 multipart/form-data,则 php://input 不可使用。

php://output

此包装器表示只写流,允许缓冲机制,类似于 printecho 语句。

php://fd

可以通过此包装器访问文件描述符。标准流 STDIN、STDOUT 和 STDERR 分别分配了文件描述符 1、2 和 3。每个其他流都分配了递增的文件描述符。因此,php://fd/5 指的是文件描述符 5。

php://memory

这是一个读写流,允许将数据临时存储在内存中。php://temp 包装器与此类似。但是,在后者的情况下,数据存储在临时文件中而不是内存中。

php://filter

此包装器允许在打开流时对其应用过滤器。过滤器在使用 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);
?>

更新于:2020-09-22

1K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告