PHP基础
PHP基础 第十五章 支持的协议和封装协议
PHP 带有很多内置 URL 风格的封装协议,可用于类似 fopen()、 copy()、 file_exists() 和 filesize() 的文件系统函数。 除了这些封装协议,还能通过 stream_wrapper_register() 来注册自定义的封装协议。Note: 用于描述一个封装协议的 URL 语法仅支持 scheme://... 的语法。 scheme:/ 和 scheme: 语法是不支持的。 ## 1.file:// — 访问本地文件系统 文件系统 是 PHP 使用的默认封装协议,展现了本地文件系统。 当指定了一个相对路径(不以/、\、\\或 Windows 盘符开头的路径)提供的路径将基于当前的工作目录。 在很多情况下是脚本所在的目录,除非被修改了。 使用 CLI 的时候,目录默认是脚本被调用时所在的目录。 ```php /path/to/file.ext relative/path/to/file.ext fileInCwd.ext C:/path/to/winfile.ext C:\path\to\winfile.ext \\smbserver\share\path\to\winfile.ext file:///path/to/file.ext ``` ## 2.http:// — 访问 HTTP(s) 网址 允许通过 HTTP 1.0 的 GET方法,以只读访问文件或资源。 HTTP 请求会附带一个 Host: 头,用于兼容基于域名的虚拟主机。 如果在你的 php.ini 文件中或字节流上下文(context)配置了 user_agent 字符串,它也会被包含在请求之中。数据流允许读取资源的 body,而 headers 则储存在了 $http_response_header 变量里。如果需要知道文档资源来自哪个 URL(经过所有重定向的处理后), 需要处理数据流返回的系列响应报头(response headers) ## 3.ftp:// — 访问 FTP(s) URLs 文件后你既可以读也可以写,但是不能同时进行。 当远程文件已经存在于 ftp 服务器上,如果尝试打开并写入文件的时候, 未指定上下文(context)选项 overwrite,连接会失败。 如果要通过 FTP 覆盖存在的文件, 指定上下文(context)的 overwrite 选项来打开、写入。 另外可使用 FTP 扩展来代替。如果你设置了 php.ini 中的 from 指令, 这个值会作为匿名(anonymous)ftp 的密码。 ## 4.php:// — 访问各个输入/输出流(I/O streams) #### php://stdin, php://stdout 和 php://stderr 允许直接访问 PHP 进程相应的输入或者输出流。 数据流引用了复制的文件描述符,所以如果你打开 php://stdin 并在之后关了它, 仅是关闭了复制品,真正被引用的 STDIN 并不受影响。php://stdin 是只读的, php://stdout 和 php://stderr 是只写的。 #### php://input php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTP_RAW_POST_DATA,因为它不依赖于特定的 php.ini 指令。 而且,这样的情况下 $HTTP_RAW_POST_DATA 默认没有填充, 比激活 always_populate_raw_post_data 潜在需要更少的内存。 enctype="multipart/form-data" 的时候 php://input 是无效的。 #### php://output php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。 #### php://fd php://fd 允许直接访问指定的文件描述符。 例如 php://fd/3 引用了文件描述符 3。 #### php://memory 和 php://temp php://memory 和 php://temp 是一个类似文件 包装器的数据流,允许读写临时数据。 两者的唯一区别是 php://memory 总是把数据储存在内存中, 而 php://temp 会在内存量达到预定义的限制后(默认是 2MB)存入临时文件中。 临时文件位置的决定和 sys_get_temp_dir() 的方式一致。 php://temp 的内存限制可通过添加 /maxmemory:NN 来控制,NN 是以字节为单位、保留在内存的最大数据量,超过则使用临时文件。 #### php://filter php://filter 是一种元封装器, 设计用于数据流打开时的筛选过滤应用。 这对于一体式(all-in-one)的文件函数非常有用,类似 readfile()、 file() 和 file_get_contents(), 在数据流内容读取之前没有机会应用其他过滤器。 ## 5.zlib:// — 压缩流 zlib: 的功能类似 gzopen(),但是 其数据流还能被 fread() 和其他文件系统函数使用。 自 PHP 4.3.0 后这个不建议被使用,因为会和其他带“:”字符的文件名混淆; 请使用 compress.zlib:// 作为替代。 - compress.zlib://file.gz - compress.bzip2://file.bz2 - zip://archive.zip#dir/file.txt ## 6.data:// — 数据(RFC 2397) ```php echo file_get_contents('data://text/plain;base64,SSBsb3ZlIFBIUAo='); $fp = fopen('data://text/plain;base64,', 'r'); ``` ## 7.glob:// — 查找匹配的文件路径模式 ```php // 循环 ext/spl/examples/ 目录里所有 *.php 文件 // 并打印文件名和文件尺寸 $it = new DirectoryIterator("glob://ext/spl/examples/*.php"); foreach($it as $f) { printf("%s: %.1FK\n", $f->getFilename(), $f->getSize()/1024); } ``` ## 8.phar:// — PHP 归档 ## 9.ssh2:// — Secure Shell 2 ## 10.rar:// — RAR ## 11.ogg:// — 音频流 ## 12.expect:// — 处理交互式的流
顶部
收展
底部
[TOC]
目录
PHP基础 第一章 基本语法
PHP基础 第二章 类型
PHP基础 第三章 变量
PHP基础 第四章 常量
PHP基础 第五章 运算符
PHP基础 第六章 流程控制
PHP基础 第七章 函数
PHP基础 第八章 命名空间
PHP基础 第九章 异常与错误
PHP基础 第十章 类与对象
PHP基础 第十一章 生成器
PHP基础 第十二章 引用
PHP基础 第十三章 预定义变量
PHP基础 第十四章 上下文(Context)选项和参数
PHP基础 第十五章 支持的协议和封装协议
PHP基础 第十六章 安全
PHP基础 第十七 章 特点
PHP基础 第十八章 PHP 核心:骇客指南
PHP基础 第十九章 核心配置选项列表
相关推荐
PHP函数
PHP设计模式
PHP算法
PHP版本