电话://

电话://访问各种I/O流

描述

PHP提供了许多杂项I/O流,允许访问PHP自己的输入和输出流、标准输入、输出和错误文件描述符、内存和磁盘支持的临时文件流,以及可以在读取和时操作其他文件资源的筛选器已写入。

php://标准输入, php://标准输出php://标准错误

php://标准输入,php://标准输出php://stderr文件允许直接访问相应的PHP进程的输入或输出流。流引用重复的文件描述符,因此如果打开php://标准输入然后关闭它,只关闭描述符的副本-实际引用的流标准DIN不受影响。它是建议您只使用常量标准DIN,STDOUT公司STDERR公司而不是使用这些包装器手动打开流。

php://标准输入是只读的,而php://标准输出php://标准错误只写。

php://输入

php://输入是一个只读流,允许您从请求正文读取原始数据。php://输入在POST请求中不可用enctype=“multipart/form-data”如果启用post_data_reading选项已启用。

php://输出

php://输出是一个只写的流,它允许您以与相同的方式写入输出缓冲机制打印回声.

php://fd文件

电话://fd允许直接访问给定文件描述符。例如,电话://fd/3引用文件描述符3。

php://内存php://临时

php://内存php://临时允许将临时数据存储在文件中的读写流,如包装器。两者之间的一个区别是php://内存将始终将其数据存储在内存中,然而php://临时将使用临时文件存储的数据量达到了预定义的限制(默认值为2 MB)。这个此临时文件的位置的确定方法与系统获取模板dir()功能。

的内存限制php://临时可以由控制附加/最大内存:NN,其中NN公司在使用临时文件,以字节为单位。

注意安全

一些PHP扩展可能需要标准IO流,并可能尝试将给定流强制转换为标准IO流。对于内存流,此强制转换可能会失败,因为它需要Cfopencookie()功能可用。此C函数是在Windows上可用。

php://过滤器

php://过滤器是一种元记录器,旨在允许申请过滤器开张时的溪流。这对一体式文件很有用功能,如读取文件(),文件(),以及文件获取内容()如果没有机会对流应用过滤器在阅读内容之前。

这个php://过滤器target接受以下参数作为其路径的一部分。可以在一个路径上指定多个筛选器链。有关使用这些参数的详细信息,请参阅示例。

php://过滤器参数
姓名 描述
资源=<要筛选的流> 此参数是必需的。它指定了您要使用的流喜欢过滤。
read=<应用于读取链的过滤器列表> 此参数是可选的。可以提供一个或多个筛选器名称此处,由管道字符分隔(|).
write=<要应用于写入链的筛选器列表> 此参数是可选的。可以提供一个或多个筛选器名称此处,由管道字符分隔(|).
<要应用于两个链的筛选器列表> 任何没有前缀的过滤器列表读取=写入=将应用于读取和根据需要编写链。

选项

包装器摘要(适用于php://过滤器,请参阅正在筛选的包装器摘要)
属性 支持
受限于允许url_fopen
受限于允许url_include php://输入,php://标准输入,php://内存php://临时只有。
允许读取 php://标准输入,php://输入,电话://fd,php://内存php://临时只有。
允许写入 php://stdout文件,php://标准错误,php://输出,电话://fd,php://内存php://临时只有。
允许附加 php://标准输出,php://标准错误,php://输出,电话://fd,php://内存php://临时只有。(相当于书面形式)
允许同时读写 电话://fd,php://内存php://临时只有。
支架统计() 没有。但是,php://内存php://临时支持fstat().
支架取消链接()
支架重命名()
支架mkdir()
支架rmdir()
支架流选择() php://标准输入,php://标准输出,php://标准错误,电话://fdphp://临时只有。

示例

示例#1php://temp/maxmemory

此可选参数允许在之前设置内存限制php://临时开始使用临时文件。

<?php(电话)
//将限制设置为5 MB。
5百万美元=5*1024*1024;
fp美元=fopen公司("php://temp/maxmemory:5百万美元",“r+”);

fputs(帧输出)(fp美元,“您好\n”);

//阅读我们写的东西。
重绕(fp美元);
回声
流获取内容(fp美元);
?>

示例#2php://filter/resource(php://过滤器/资源)=<要过滤的流>

此参数必须位于你的结局php://过滤器规范和应该指向要筛选的流。

<?php(电话)
/*这相当于简单地:
readfile(“http://www.example.com");
因为实际上没有指定筛选器*/

读取文件("php://filter/resource=http://www.example.com");
?>

示例#3php://filter/读取=<要应用于读取链的筛选器列表>

此参数需要一个或多个由管道字符分隔的筛选器名称|.

<?php(电话)
/*这将输出的内容
www.example.com全部大写*/
读取文件("php://filter/read=string.toupper/resource=http://www.example.com");

/*这将与上述操作相同
但也会对其进行ROT13编码*/
读取文件("php://filter/read=string.toupper|string.rot13/资源=http://www.example.com");
?>

示例#4php://filter/写入=<要应用于写入链的筛选器列表>

此参数需要一个或多个由管道字符分隔的筛选器名称|.

<?php(电话)
/*这将过滤字符串“Hello World”
通过rot13过滤器,然后写入
当前目录中的example.txt*/
文件输出内容("php://filter/write=string.rot13/resource=example.txt",“你好,世界”);
?>

示例#5php://内存php://临时不可重复使用

php://内存php://临时不可重复使用,即流关闭后,无法再使用再次提到他们。

文件输出内容('php://内存','PHP');
echo file_get_contents('php://内存');//什么都不打印
添加注释

用户贡献的笔记

此页面没有用户贡献的注释。
到顶部