关于php支持的协议与封装协议
1 <?php 2 3 /* 4 * php://stdin 标准输入流 5 * php://stdout 标准输入流 6 * php://stderr 标准错误流 7 * php://output 只写的数据流 8 * php://fd 允许直接方位文件描述符 9 * 10 * php://memory 允许读写临时数据 php://memory 和 php://temp 都是允许读写的临时数据,他俩的唯一区别是 php://memory 总是把数据存在内存中 11 * 而php://temp 会在内存达到预定义的限制后把数据存在临时文件中,sys_get_temp_dir() 可以获取临时文件的地址 12 * php://temp 的内存限制可以通过php://maxmemory:XX来限制,XX的单位是字节. 13 * php://temp 允许读写临时数据 14 * 15 * php://filter 数据筛选流 , 是一种元封装器,用于数据打开时筛选过滤应用 16 * */ 17 /* 18 * 测试读写临时数据流,php://temp 19 * 20 $fiveMBs = 5 * 1024 * 1024 ; 21 $fp = fopen ( "php://temp/maxmemory: $fiveMBs " , 'r+' ); 22 23 fputs ( $fp , "hello\n" ); 24 25 // Read what we have written. 26 rewind ( $fp ); 27 echo stream_get_contents ( $fp ); 28 */ 29 30 //测试只写数据流 31 $out = fopen("php://output","a"); 32 fputs($out,"测试只能输出流");
可选项:
php://filter 的试用方法:
1 /* 这会以大写字母输出 www.example.com 的全部内容 */ 2 readfile ( "php://filter/read=string.toupper/resource=http://www.example.com" ); 3 4 /* 这会和以上所做的一样,但还会用 ROT13 加密。 */ 5 readfile ( "php://filter/read=string.toupper|string.rot13/resource=http://www.example.com" );
1 /* 这会通过 rot13 过滤器筛选出字符 "Hello World" 2 然后写入当前目录下的 example.txt */ 3 file_put_contents ( "php://filter/write=string.rot13/resource=example.txt" , "Hello World" );
PHP支持的封装协议大体上就这么理解了。