作者:晴可倾 | 来源:互联网 | 2018-05-12 13:04
惭愧,前几天翻看unix编程艺术才认识到,以前经常翻看php手册过程中经常见到的SupportedProtocolsandWrappers是多么让人喜爱php的封装协议的语法仅支持scheme:...php支持的协议有:file:—访问本地文件系统—访问HTTP(s)网址ft
惭愧,前几天翻看 unix编程艺术 才认识到,以前经常翻看 php手册 过程中经常见到的 Supported Protocols and Wrappers 是多么让人喜爱 php的封装协议的语法仅支持 scheme://... php支持的协议有: file:// — 访问本地文件系统http:// — 访问 HTTP(s) 网址ft
惭愧,前几天翻看 unix编程艺术
才认识到,以前经常翻看 php手册
过程中经常见到的 Supported Protocols and Wrappers 是多么让人喜爱
- php的封装协议的语法仅支持
scheme://...
php支持的协议有:
file:// — 访问本地文件系统
http:// — 访问 HTTP(s) 网址
ftp:// — 访问 FTP(s) URLs
php:// — 访问各个输入/输出流(I/O streams)
zlib:// — 压缩流
data:// — 数据(RFC 2397)
glob:// — 查找匹配的文件路径模式
phar:// — PHP 归档
ssh2:// — Secure Shell 2
rar:// — RAR
ogg:// — 音频流
expect:// — 处理交互式的流
影响的函数有:
fopen()
copy()
fileexists()
filesize()
getimagesize()
filegetcontents()
fileput_contents()
readfile()
…
注意:
php://output
和 php://stdout
在 CLI
下是一模一样的即都会输出,因为他们都指向当前进程的STDOUT
,但在 apache
中 php://stdout
没有输出,原因就是:
CLI
方式,所有输出都是指向标准输出即 终端
APACHE
方式[SAPI
]方式,STDOUT
是终端即apache的子进程的STDOUT,而 php://output
则承载HTTP
进程的输出
2. fopen("./filename.ext")
和 fopen("/absolute_file_path/filename.ext")
可以认为是对
fopen("file://.filename.ext")和
fopen("file:///absolutefilepath/filename.ext")` 的简化
原文地址:php文件访问协议化, 感谢原作者分享。