将php中stat()得到的文件权限转成Linux形式
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形式相关推荐
- js将excel转为html,js中表格转为excel文件如何实现多sheet形式
js中表格转为excel文件如何实现多sheet形式 var idTmr; function getExplorer() { var explorer = window.navigator.userA ...
- Linux中的用户及文件权限管理总结
一.用户 1.查看用户:who am I 2.创建用户:sudo adduser <用户名> 在linux中,root权限拥有至高无上的权利,一般登录系统时都是以普通账户的身份登录的,要创 ...
- linux centos7增加文件夹权限,在Centos7系统中实现用户和文件权限的管理
实验:用户和文件权限管理 涉及到的命令:useradd usermode mkdir groupadd passwd chown chmod 建立用户目录 创建目录/tech/benet和/tech/ ...
- Linux的环境中如何生成srw-rw---- 的文件权限?
文件属性 d 开头是: 目录文件. l 开头是: 符号链接(指向另一个文件,类似于瘟下的快捷方式). s 开头是: 套接字文件(sock). b 开头是: 块设备文件,二进制文件. c 开头是: 字符 ...
- linux 文件权限的作用,Linux文件与目录权限的意义
文件与目录权限的作用图 1-1 命令 chgrp(修改文件所属用户组) 格式:chgrp 要改成的组 文件名 -v 显示过程 -R 递归修改,如果是一个目录,那么这个参数会把目录和下面的所有文件的所 ...
- chmod命令文件权限属性设置(linux/cygwin)
chmod命令 文件权限属性设置 转载自:http://man.linuxde.net/chmod chmod命令用来变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取.写入. ...
- linux文件权限的例子,Linux基础教程之linux文件权限深度解读
基本命令 1.cut: cat/etc/passwd|cut-d':'-f7|uniq-c|sort-nr 2.authconfig修改加密方式 –passalgo=sha256-update 3.s ...
- linux scp传输文件权限被拒绝,Linux的远程传输文件scp及出现Permission denied (publickey).lost connection问题解决方法...
一.Linux的远程传输文件scp使用方法 1.当前Linux系统 --> 远程Linux系统 scp 当前Linux系统文件路径/文件名 远程Linux用户名@IP地址:远程Linux系统文件 ...
- linux改文件权限为root,Linux创建root不可修改删除而只可追加权限的文件
文件类型 对于文件和目录的访问权力是根据读访问,写访问,和执行访问来定义的.现在介绍Linux文件系统两种很实用的权限i和a. 使用 ls –l 命令可以显示文件的属性以及文件所属的用户和组. 列表的 ...
- linux文件权限对应数字,linux文件权限更改命令chmod及数字权限
chmod -change file mode bits :更改文件权限 chmod是用来改变文件或者目录权限的命令,但只有文件的属主和超级用户(root)才有这种权限. 更改文件权限的2种方式: 一 ...
最新文章
- python json数据的文件读写操作
- HDU 1712 裸分组dp
- C# default關鍵字
- python与sap_Python结合SAP GUI Script操作sap的简易教程
- c#equals方法源码_C#中的Int32.Equals()方法示例
- 经典面试题:有序矩阵的快速查找
- Linux -单用户模式(忘记Linux的root密码)
- linux系统安全加固基础篇1
- linux 下压缩解压命令
- XMPP即时通讯协议使用(十)——好友关系状态
- java 代码实现加锁_java内置锁实现锁住代码块方案(同一个对象或锁住整个类.class)...
- 机器学习实例----美国人口收入分析
- final_cut_pro基础
- swagger文档增强工具knife4j使用详解
- A Prompting-based Approach for Adversarial Example Generation andRobustness Enhancement
- 小米电视是鸿蒙系统吗,搭载鸿蒙系统!华为正式发布荣耀智慧屏 小米电视迅速升级取消开机广告...
- 系统接口对接:(2)
- 让opencv输出人脸检测的得分(置信率),找出一些和脸比较像但是不是脸的负样本
- 计算机开机控制信号,笔记本电脑开机及信号电路故障维修
- MSTP的配置与原理
热门文章
- velocity自定义函数_mysql建立自定义函数的问题
- opengl 保留上一帧_历史上第一部长片动画,还真有点重口
- python负数错误异常类型_十七、深入Python异常处理
- LeetCode每周刷题(2019.7.8-2019.7.14)
- CUPS-Centos6-dockerfile
- onbeforeunload事件在页面关闭或刷新时触发
- HTML基础第九讲---表单
- python 解决for读取文件出现的换行符
- 导入导出mysql数据库
- Net设计模式实例之桥接模式( Bridge Pattern)(1)