PHP php://

phpserver side programmingprogramming更新于 2025/8/19 2:07:17

简介

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

标准流

php://stdin、php://stdout 和 php://stderr 分别允许 PHP 进程直接访问标准输入流设备、标准输出流和错误流。预定义常量 STDIN、STDOUT 和 STDERR 分别代表这些流。

php://input

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

php://output

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

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

相关文章