Php 目录权限检查和更改
我想检查某个目录的文件权限,如果它与预定义的值不同,则进行更改。我该怎么做Php 目录权限检查和更改,php,file-permissions,Php,File Permissions,我想检查某个目录的文件权限,如果它与预定义的值不同,则进行更改。我该怎么做 $dir ="./"; $chmod =0644; $k=fileperms($dir); // $chmod= decoct(intval($chmod)); if ( $k!== $chmod) { chmod($dir ,$chmod); } 注意:我的问题不是关于chmod,如何检查当前权限以及如何将其与定义的值进行比较?因为filep
$dir ="./";
$chmod =0644;
$k=fileperms($dir);
// $chmod= decoct(intval($chmod));
if ( $k!== $chmod) {
chmod($dir ,$chmod);
}
注意:我的问题不是关于chmod,如何检查当前权限以及如何将其与定义的值进行比较?因为fileperms返回5位数(例如40644),而我定义的变量是八进制值和四位数(例如0644) 试试这个,未经测试,因为没有在我的mo计算机上
您可能希望按位和fileperms的返回值
只获取较低的位,然后比较:
// Get only the 4 righmost octal digits of the file's permissions
$perms = fileperms($file) & 07777;
$chmod = 0644;
if ($perms !== $chmod) {
// do your stuff
}
请注意,没有“八进制值”与“十进制值”之比——整数都是整数,可以用不同的网络符号表示,因此比较“八进制”$chmod
和“十进制”$perms
——实际上它们只是整数。例如,尝试运行以下操作:
var_dump(0644);
您得到的是int(420)
,因为0644
只是用八进制表示整数值420(十进制)的一种方法。出于同样的原因,这是可行的:
var_dump(0644 === 420);
// Output is bool(true)
我的问题不是chmod,如何检查当前权限以及如何将其与定义的值进行比较?因为fileperms返回5位数(例如40644),而我定义的变量是八进制值和4位数(例如0644).chmod($Folder,0644);必须更改为chmod($Folder,$chmod);所以八进制和十进制的问题就出现了“$chmod”也应该更改。请检查一些示例。其中一些例子解决了你的问题。@luckytaxi我在那里查过了,谷歌搜索了很多。我的问题是关于十进制和八进制值的变化。请阅读我问题的最后部分。这个答案应该会有帮助。忘记第一个数字,把它去掉,用最后四个。