PHP:如何检查CHMOD模式是否有效?

PHP:如何检查CHMOD模式是否有效?,php,Php,我可以使用chmod设置文件权限: $file = 'somefile.txt'; $mode = 0755; chmod($file, $mode); 如何检查模式是否有效?似乎进入一个随机模式真的会弄乱文件权限 比如: 只要检查一下,如果mod在给定的数字范围内。即 function mode_is_valid($mode) { if (is_string($mode)) { $mode = octdec($mode); } return $mod

我可以使用
chmod
设置文件权限:

$file = 'somefile.txt';
$mode = 0755;

chmod($file, $mode);
如何检查模式是否有效?似乎进入一个随机模式真的会弄乱文件权限

比如:


只要检查一下,如果mod在给定的数字范围内。即

function mode_is_valid($mode) {
    if (is_string($mode)) {
        $mode = octdec($mode);
    }
    return $mode >= 0 && $mode <= 0777;
}
功能模式有效($mode){
如果(是字符串($mode)){
$mode=octdec($mode);
}

return$mode>=0&&$modechmod遵循经典的Unix/Linux文件模式逻辑。数字表示八进制!!符号的位模式。读/写/执行有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服务器进程应该能够读取文件,也请避免删除第二位的读取权限。

我认为
99
301
不是有效的模式。可能需要对此进行改进回答。@Colland你说的是字符串
99
还是数字?数字有八进制表示法,这当然是有效的:
99=0143
-完全有效模式..完全忽略八进制表示法。我的错。如果可以的话,我会取消我的投票
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