关于php:在PHP中操作文件的扩展属性

36次阅读

共计 1881 个字符,预计需要花费 5 分钟才能阅读完成。

在操作系统的文件中,还存在着一种咱们能够本人定义的文件属性。这些属性不是保留在文件内容中,也不是间接能够通过 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 等利用的相干常识。专一于一个畛域,同时扩大其它畛域的常识,才是学习的最佳形式。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/9. 在 PHP 中操作文件的扩大属性.php

参考文档:

https://www.php.net/manual/zh/book.xattr.php

===========

各自媒体平台均可搜寻【硬核项目经理】

正文完
 0