php的stat函数可以返回文件的各种属性,详情见:http://php.net/manual/zh/function.stat.php

其中mode字段表示文件的权限,一个int型的数值。下边的函数是将这个int型数值转换成Linux形式的格式,比如 33206 -> -rw-rw-rw-

 1 /**
 2  * [返回-rwxrwxrwx文件权限表达方式]
 3  * @param  string $filePath [文件路径]
 4  * @return [string]         []
 5  */
 6 function getHumanFileStat($filePath = '')
 7 {
 8     if(!file_exists($filePath) || !is_file($filePath))
 9         return false;
10
11     clearstatcache();
12     $stat = stat($filePath);
13     $mode = $stat['mode'];
14
15     //参考libc's fstat(): http://man.he.net/man2/fstat
16     //8进制数值对应的文件类型
17     $typeMap = array(
18         0140000    => 'ssocket',
19         0120000    => 'llink',
20         0100000    => '-file',
21         0060000    => 'bblock',
22         0040000    => 'ddirectory',
23         0020000    => 'cchar',
24         0010000    => 'pfifo',
25     );
26
27     //各个位的权限对应的8进制数值
28     $bitValueMap = array(
29         'mask'         => 0170000,
30         'ubit'         => 0004000,
31         'gbit'        => 0002000,
32         'stickybit'    => 0001000,
33         'ur'        => 0400,
34         'uw'        => 0200,
35         'ux'        => 0100,
36         'gr'        => 0040,
37         'gw'        => 0020,
38         'gx'        => 0010,
39         'or'        => 0004,
40         'ow'        => 0002,
41         'ox'        => 0001,
42     );
43
44     $str = '';
45     //filetype,first character
46     $str .= array_key_exists($mode & $bitValueMap['mask'], $typeMap) ? substr($typeMap[$mode & $bitValueMap['mask']], 0, 1) : 'u';
47
48     //user Permission
49     $str .= $mode & $bitValueMap['ur'] ? 'r' : '-';
50     $str .= $mode & $bitValueMap['uw'] ? 'w' : '-';
51     $str .= $mode & $bitValueMap['ux'] ? ($mode & $bitValueMap['ubit'] ? 's' : 'x') : ($mode & $bitValueMap['ubit'] ? 'S' : '-');
52
53     //group Permission
54     $str .= $mode & $bitValueMap['gr'] ? 'r' : '-';
55     $str .= $mode & $bitValueMap['gw'] ? 'w' : '-';
56     $str .= $mode & $bitValueMap['gx'] ? ($mode & $bitValueMap['gbit'] ? 's' : 'x') : ($mode & $bitValueMap['gbit'] ? 'S' : '-');
57
58     //other Permission
59     $str .= $mode & $bitValueMap['or'] ? 'r' : '-';
60     $str .= $mode & $bitValueMap['ow'] ? 'w' : '-';
61     $str .= $mode & $bitValueMap['ox'] ? ($mode & $bitValueMap['stickybit'] ? 't' : 'x') : ($mode & $bitValueMap['stickybit'] ? 'T' : '-');
62
63     clearstatcache();
64     return $str;
65 }

参考文献:

http://php.net/manual/zh/function.stat.php

http://technosophos.com/2012/02/15/php-mode-strings-stat-and-stream-wrappers.html

http://man.he.net/man2/fstat

转载于:https://www.cnblogs.com/cxybjfu/p/4768838.html

将php中stat()得到的文件权限转成Linux形式相关推荐

  1. js将excel转为html,js中表格转为excel文件如何实现多sheet形式

    js中表格转为excel文件如何实现多sheet形式 var idTmr; function getExplorer() { var explorer = window.navigator.userA ...

  2. Linux中的用户及文件权限管理总结

    一.用户 1.查看用户:who am I 2.创建用户:sudo adduser <用户名> 在linux中,root权限拥有至高无上的权利,一般登录系统时都是以普通账户的身份登录的,要创 ...

  3. linux centos7增加文件夹权限,在Centos7系统中实现用户和文件权限的管理

    实验:用户和文件权限管理 涉及到的命令:useradd usermode mkdir groupadd passwd chown chmod 建立用户目录 创建目录/tech/benet和/tech/ ...

  4. Linux的环境中如何生成srw-rw---- 的文件权限?

    文件属性 d 开头是: 目录文件. l 开头是: 符号链接(指向另一个文件,类似于瘟下的快捷方式). s 开头是: 套接字文件(sock). b 开头是: 块设备文件,二进制文件. c 开头是: 字符 ...

  5. linux 文件权限的作用,Linux文件与目录权限的意义

    文件与目录权限的作用图 1-1 命令 chgrp(修改文件所属用户组) 格式:chgrp 要改成的组  文件名 -v 显示过程 -R 递归修改,如果是一个目录,那么这个参数会把目录和下面的所有文件的所 ...

  6. chmod命令文件权限属性设置(linux/cygwin)

    chmod命令 文件权限属性设置 转载自:http://man.linuxde.net/chmod chmod命令用来变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取.写入. ...

  7. linux文件权限的例子,Linux基础教程之linux文件权限深度解读

    基本命令 1.cut: cat/etc/passwd|cut-d':'-f7|uniq-c|sort-nr 2.authconfig修改加密方式 –passalgo=sha256-update 3.s ...

  8. linux scp传输文件权限被拒绝,Linux的远程传输文件scp及出现Permission denied (publickey).lost connection问题解决方法...

    一.Linux的远程传输文件scp使用方法 1.当前Linux系统 --> 远程Linux系统 scp 当前Linux系统文件路径/文件名 远程Linux用户名@IP地址:远程Linux系统文件 ...

  9. linux改文件权限为root,Linux创建root不可修改删除而只可追加权限的文件

    文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的.现在介绍Linux文件系统两种很实用的权限i和a. 使用 ls –l 命令可以显示文件的属性以及文件所属的用户和组. 列表的 ...

  10. linux文件权限对应数字,linux文件权限更改命令chmod及数字权限

    chmod -change file mode bits :更改文件权限 chmod是用来改变文件或者目录权限的命令,但只有文件的属主和超级用户(root)才有这种权限. 更改文件权限的2种方式: 一 ...

最新文章

  1. python json数据的文件读写操作
  2. HDU 1712 裸分组dp
  3. C# default關鍵字
  4. python与sap_Python结合SAP GUI Script操作sap的简易教程
  5. c#equals方法源码_C#中的Int32.Equals()方法示例
  6. 经典面试题:有序矩阵的快速查找
  7. Linux -单用户模式(忘记Linux的root密码)
  8. linux系统安全加固基础篇1
  9. linux 下压缩解压命令
  10. XMPP即时通讯协议使用(十)——好友关系状态
  11. java 代码实现加锁_java内置锁实现锁住代码块方案(同一个对象或锁住整个类.class)...
  12. 机器学习实例----美国人口收入分析
  13. final_cut_pro基础
  14. swagger文档增强工具knife4j使用详解
  15. A Prompting-based Approach for Adversarial Example Generation andRobustness Enhancement
  16. 小米电视是鸿蒙系统吗,搭载鸿蒙系统!华为正式发布荣耀智慧屏 小米电视迅速升级取消开机广告...
  17. 系统接口对接:(2)
  18. 让opencv输出人脸检测的得分(置信率),找出一些和脸比较像但是不是脸的负样本
  19. 计算机开机控制信号,笔记本电脑开机及信号电路故障维修
  20. MSTP的配置与原理

热门文章

  1. velocity自定义函数_mysql建立自定义函数的问题
  2. opengl 保留上一帧_历史上第一部长片动画,还真有点重口
  3. python负数错误异常类型_十七、深入Python异常处理
  4. LeetCode每周刷题(2019.7.8-2019.7.14)
  5. CUPS-Centos6-dockerfile
  6. onbeforeunload事件在页面关闭或刷新时触发
  7. HTML基础第九讲---表单
  8. python 解决for读取文件出现的换行符
  9. 导入导出mysql数据库
  10. Net设计模式实例之桥接模式( Bridge Pattern)(1)