PHP对文件的扩展属性进行操作怎么实现
Admin 2022-07-02 群英技术资讯 534 次浏览
在操作系统的文件中,还存在着一种我们可以自己定义的文件属性。这些属性不是保存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容。它们可以将一个键值对信息永久得关联到文件上,一般现在的 Linux 系统都支持这样的文件扩展属性的功能。在操作系统中我们可以通过 setfattr、 getfattr、 attr 这些命令来操作它们。当然,PHP 也为我们提供了一个扩展可以用于对文件的扩展属性进行操作。
添加扩展属性
$file = __FILE__; var_dump(xattr_set($file, 'Author', 'ZyBlog')); // bool(true) var_dump(xattr_set($file, 'Num.', 121 )); // bool(true) var_dump(xattr_set($file, 'Description', 'shuo ming', XATTR_ROOT)); // bool(true)
首先我们定义了操作的文件,在这里我们直接使用 __FILE__ 魔术常量来操作当前我们测试的这个 php 文件。然后使用 xattr_set() 就可以设置文件的扩展属性了。文件的扩展属性有命名空间的概念,PHP 中也相应地为我们提供了 普通(user)命名空间 和 XATTR_ROOT(root命令空间) 两种形式。root 命名空间中的属性可以由超级用户设置,对其他用户不可见,而 user 命名空间则是根据文件的权限来定义的,也就是当前可以操作这个文件的用户就可以读取到这个文件的 user命名空间 所设置的这些扩展属性。
查看扩展属性列表
var_dump(xattr_list($file, XATTR_ROOT)); // array(1) { // [0]=> // string(11) "Description" // } var_dump(xattr_list($file)); // array(2) { // [0]=> // string(4) "Num." // [1]=> // string(6) "Author" // }
xattr_list() 函数可以获取文件所定义的所有命名空间的键。它也是区分 user 和 root 命名空间的。
获得扩展属性内容
var_dump(xattr_get($file, 'Author')); // string(6) "ZyBlog" var_dump(xattr_get($file, 'Description')); // bool(false) var_dump(xattr_get($file, 'Description', XATTR_ROOT)); // string(9) "shuo ming"
xattr_get() 函数用于获得指定键的扩展属性内容。配合上面的 xattr_list() 函数就可以获取某个文件的所有扩展属性信息。如果我们不增加 XATTR_ROOT 参数的话,是无法读取到 root命名空间 中的内容的。
删除扩展属性
var_dump(xattr_remove($file, 'Num.')); // bool(true) var_dump(xattr_list($file)); // array(1) { // [0]=> // string(6) "Author" // }
xattr_remove() 用于删除文件的扩展属性,我们直接删除了测试文件的 user命名空间 中的 Num. 属性。再次查看它的 xattr_list() 就只剩下 Author 了。同样地,这个函数也是支持第三个参数来指定是否是 root命名空间 的操作。
验证系统是否支持扩展属性操作
var_dump(xattr_supported($file)); // bool(true)
最后就是一个 xattr_supported() 函数,用于验证当前操作系统的文件系统是否支持 xattr 相关的操作。
总结
今天的内容非常地简单浅显,这个文件的扩展属性的功能说实话也是看到 PHP 中有这个功能扩展才回去查看了 Linux 系统中的相关文档。所以说,学习都是关联的,当我们在学习 PHP 的时候,顺带着也在学习 Linux ,同时更会经常接触到 MySQL 、 Nginx 等应用的相关知识。专注于一个领域,同时扩展其它领域的知识,才是学习的最佳方式。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在PHP中,copy函数的作用是什么?怎样使用?copy就是拷贝的意思,很多PHP新手不了解copy函数的用法,对于copy函数的使用还是比较简单的,下面就给大家介绍一下copy函数的使用以及示例。
laravel框架怎样实现图片上传功能?文本给大家介绍两种laravel图片上传方式,一是laravel里面自带的上传方式,二是通用的上传方式。下面一起跟随小编来看看吧。
$dirname=phpMyAdmin;一、遍历目录/**遍历目录:*输入:目录路径*输出。 $filenames=array){//读到结尾返回假 if{ $filenames[]=$filename; } } closedir。
这篇文章主要给大家介绍了一次因composer错误使用引发的问题与解决方法,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
这篇文章主要介绍了Laravel 中简单设置多态关系模型别名的方式,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008