1. 文件模式概述
文件模式是文件对外的操作权限,主要包括以下几种类型:
- r:只读模式,只能读取文件内容,不能进行修改。
- w:只写模式,可以创建新的文件,也可以覆盖原文件,但是不能读取文件内容。
- a:追加模式,可以在文件末尾添加新内容,不能修改原文件,也不能读取文件内容。
- x:只写新文件模式,只能创建新文件,若原文件已存在则报错。
- +:可读可写模式,可以读取文件内容、修改文件内容和创建新文件。
1.1 文件模式示例
例如,我们要打开一个文件,并进行读写操作,下面是一个示例:
//以读写模式打开文件
$file = fopen("test.txt","r+");
//读取文件内容
$content = fread($file,filesize("test.txt"));
//输出文件内容
echo $content;
//写入文件内容
fwrite($file,"Hello World");
//关闭文件
fclose($file);
2. 改变文件模式
改变文件模式主要由 chmod 函数实现,其语法格式如下:
chmod ( string $filename , int $mode ) : bool
其中,$filename 表示要改变模式的文件路径,$mode 表示要设置的模式值。
2.1 模式值说明
模式值由三个部分组成,分别表示文件的用户、用户组和其他用户的权限,每个部分又由三位二进制数表示,每位表示对应权限是否开启。二进制数的左边表示高权限,右边表示低权限,例如:
- rwxr-xr-- 对应的二进制数为 111 101 100,其中第一、二、三位表示用户的读、写、执行权限,第四、五、六位表示用户组的读、写、执行权限,最后三位表示其他用户的读权限。
- rw-rw-r-- 对应的二进制数为 110 110 100,其中第一、二、三、四、五、六位表示用户和用户组的读、写权限,最后三位表示其他用户的读权限。
2.2 模式值示例
下面是一个改变文件模式的示例,将文件的读、写权限完全开放:
//打开文件
$file = fopen("test.txt","r+");
//获取当前文件的模式值
$mode = fileperms("test.txt");
//修改模式值,完全开放读写权限
$mode = $mode | 0666;
//设置模式值
chmod("test.txt", $mode);
//关闭文件
fclose($file);
上述示例中,通过 `fileperms` 函数获取文件的当前模式值,然后通过按位或运算符 `|` 将要修改的权限值(0666)与当前模式值进行运算,得到新的模式值,最后通过 `chmod` 函数将新的模式值设置给文件。