XXXV. Filesystem 文件系统函数

需求

无需外部库文件就可以加入本扩展模块的支持。但如要使 PHP 在 Linux 上支持 LFS(大文件)的话,必须有最新的 glibc 并在编译时加入参数: -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64

安装

本函数库作为 PHP 内核的一部分,不用安装就能使用。

运行时配置

这些函数的行为受 php.ini 的影响。

表格 1. 文件系统和流配置选项

名称 默认值 可修改范围 更新记录
allow_url_fopen "1" PHP_INI_SYSTEM PHP_INI_ALL in PHP <= 4.3.4. PHP 4.0.4 版以后可用。
user_agent NULL PHP_INI_ALL PHP 4.3.0 版以后可用。
default_socket_timeout "60" PHP_INI_ALL PHP 4.3.0 版以后可用。
from "" PHP_INI_ALL  
auto_detect_line_endings "0" PHP_INI_ALL PHP 4.3.0 版以后可用。

以下是配置选项的简要解释。

allow_url_fopen boolean

本选项激活了 URL 形式的 fopen 封装协议使得可以访问 URL 对象例如文件。默认的封装协议提供用 ftp 和 http 协议来访问 远程文件 ,一些扩展库例如 zlib 可能会注册更多的封装协议。

注: 出于安全性考虑,这个选项只能通过 php.ini 中设置。

注: 本选项是版本 4.0.3 发行后立即引进的。4.0.3 以及以前的版本只能在编译时通过配置项 --disable-url-fopen-wrapper 来取消此特性。

警告

Windows 版在 PHP 4.3.0 之前,下列函数不支持远程文件访问: include() include_once() , require() require_once() 参考 LV, Image 图像函数 扩展库中的 imagecreatefromXXX 函数。

user_agent string

定义 PHP 发送的 User-Agent。

default_socket_timeout integer

基于 socket 的流的默认超时时间(秒)。

注: 本配置参数是 PHP 4.3.0 引进的。

from string

定义匿名 ftp 的密码(email 地址)。

auto_detect_line_endings boolean

当设为 On 时,PHP 将检查通过 fgets() file() 取得的数据中的行结束符号是符合 Unix,MS-Dos,还是 Macintosh 的习惯。

这使得 PHP 可以和 Macintosh 系统交互操作,但是默认值是 Off,因为在检测第一行的 EOL 习惯时会有很小的性能损失,而且在 Unix 系统下使用回车符号作为项目分隔符的人们会遭遇向下不兼容的行为。

注: 本配置参数是 PHP 4.3.0 引进的。

预定义常量

以下常量由本扩展模块定义,因此只有在本扩展模块被编译到 PHP 中,或者在运行时被动态加载后才有效。

GLOB_BRACE ( integer )

GLOB_ONLYDIR ( integer )

GLOB_MARK ( integer )

GLOB_NOSORT ( integer )

GLOB_NOCHECK ( integer )

GLOB_NOESCAPE ( integer )

PATHINFO_DIRNAME ( integer )

PATHINFO_BASENAME ( integer )

PATHINFO_EXTENSION ( integer )

FILE_USE_INCLUDE_PATH ( integer )

FILE_APPEND ( integer )

FILE_IGNORE_NEW_LINES ( integer )

FILE_SKIP_EMPTY_LINES ( integer )

参见

相关函数参见 目录函数 程序执行函数

有关可以用于远程文件的各种 URL 封装协议的说明列表,参见 附录 L

目录
basename  -- 返回路径中的文件名部分
chgrp  -- 改变文件所属的组
chmod  -- 改变文件模式
chown  -- 改变文件的所有者
clearstatcache  -- 清除文件状态缓存
copy  -- 拷贝文件
delete  -- 参见 unlink() unset()
dirname  -- 返回路径中的目录部分
disk_free_space  -- 返回目录中的可用空间
disk_total_space  -- 返回一个目录的磁盘总大小
diskfreespace  --  disk_free_space() 的别名
fclose  -- 关闭一个已打开的文件指针
feof  -- 测试文件指针是否到了文件结束的位置
fflush  -- 将缓冲内容输出到文件
fgetc  -- 从文件指针中读取字符
fgetcsv  -- 从文件指针中读入一行并解析 CSV 字段
fgets  -- 从文件指针中读取一行
fgetss  -- 从文件指针中读取一行并过滤掉 HTML 标记
file_exists  -- 检查文件或目录是否存在
file_get_contents  -- 将整个文件读入一个字符串
file_put_contents  -- 将一个字符串写入文件
file  -- 把整个文件读入一个数组中
fileatime  -- 取得文件的上次访问时间
filectime  -- 取得文件的 inode 修改时间
filegroup  -- 取得文件的组
fileinode  -- 取得文件的 inode
filemtime  -- 取得文件修改时间
fileowner  -- 取得文件的所有者
fileperms  -- 取得文件的权限
filesize  -- 取得文件大小
filetype  -- 取得文件类型
flock  -- 轻便的咨询文件锁定
fnmatch  -- 用模式匹配文件名
fopen  -- 打开文件或者 URL
fpassthru  -- 输出文件指针处的所有剩余数据
fputcsv  -- 将行格式化为 CSV 并写入文件指针
fputs  --  fwrite() 的别名
fread  -- 读取文件(可安全用于二进制文件)
fscanf  -- 从文件中格式化输入
fseek  -- 在文件指针中定位
fstat  -- 通过已打开的文件指针取得文件信息
ftell  -- 返回文件指针读/写的位置
ftruncate  -- 将文件截断到给定的长度
fwrite  -- 写入文件(可安全用于二进制文件)
glob  -- 寻找与模式匹配的文件路径
is_dir  -- 判断给定文件名是否是一个目录
is_executable  -- 判断给定文件名是否可执行
is_file  -- 判断给定文件名是否为一个正常的文件
is_link  -- 判断给定文件名是否为一个符号连接
is_readable  -- 判断给定文件名是否可读
is_uploaded_file  -- 判断文件是否是通过 HTTP POST 上传的
is_writable  -- 判断给定的文件名是否可写
is_writeable  --  is_writable() 的别名
link  -- 建立一个硬连接
linkinfo  -- 获取一个连接的信息
lstat  -- 给出一个文件或符号连接的信息
mkdir  -- 新建目录
move_uploaded_file  -- 将上传的文件移动到新位置
parse_ini_file  -- 解析一个配置文件
pathinfo  -- 返回文件路径的信息
pclose  -- 关闭进程文件指针
popen  -- 打开进程文件指针
readfile  -- 输出一个文件
readlink  -- 返回符号连接指向的目标
realpath  -- 返回规范化的绝对路径名
rename  -- 重命名一个文件或目录
rewind  -- 倒回文件指针的位置
rmdir  -- 删除目录
set_file_buffer  --  stream_set_write_buffer() 的别名
stat  -- 给出文件的信息
symlink  -- 建立符号连接
tempnam  -- 建立一个具有唯一文件名的文件
tmpfile  -- 建立一个临时文件
touch  -- 设定文件的访问和修改时间
umask  -- 改变当前的 umask
unlink  -- 删除文件