我可以使用chmod
设置文件权限:
$file = 'somefile.txt';
$mode = 0755;
chmod($file, $mode);
如何检查模式是否有效?似乎进入随机模式确实会弄乱文件权限。
赞:
if (mode_is_valid($mode)) {
chmod($file, $mode);
}
答案 0 :(得分:1)
只需检查一下,mod是否在给定的数字范围内。即
function mode_is_valid($mode) {
if (is_string($mode)) {
$mode = octdec($mode);
}
return $mode >= 0 && $mode <= 0777;
}
如果您还想照顾特殊权限,则需要添加其他逻辑。
答案 1 :(得分:0)
chmod遵循经典的Unix / Linux文件模式逻辑。数字代表OCTAL的位模式!符号。共有9位用于读/写/执行,另外还有一些用于特殊处理的标志,例如所有权继承(所谓的S位)...
9位的顺序是:
3 bits for "owner" of the file / link / directory
3 bits for "group" of the file / link / directory
3 bits for the rest of the world
单个位表示
READ permission
WRITE permission
EXECUTE permission
示例
READ (1) WRITE (1) EXEC (1) = binary 111 = octal 7
READ (1) WRITE (1) EXEC (0) = binary 110 = octal 6
READ (1) WRITE (0) EXEC (0) = binary 100 = octal 4
以上三种组合是最常见的组合。 READ + EXEC = 5也很常见。目录上需要EXEC才能列出目录。
在Windows上,这是在基础文件系统允许的情况下模拟的。
因此,请避免使用任何会删除所有者读取文件权限的操作。如果Web服务器UID不是所有者,但组和Web服务器进程应该能够读取文件,则还应避免删除第二位的读取权限。