在PHP中操作檔案的擴充套件屬性

2022-09-26 01:54:12 字數 1978 閱讀 9465

在作業系統的檔案中,還存在著一種我們可以自己定義的檔案屬性。這些屬性不是儲存在檔案內容中,也不是直接可以通過 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, 'detmgaqyyhfescription', '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)

var_dump(xattr_list($file));

// array(2)

xattr_list() 函式可以獲取檔案所定義的所有命名空間的鍵。它也是區分 user 和 root 命名空間的。

獲得擴充套件屬性內容

var_dump(xattr_get($file, 'author')); // string(6) "zyblog"

var_du程式設計客棧mp(xattr_get($file, 'description')); // botmgaqyyhfeol(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($fitmgaqyyhfele));

// array(1)

xattr_remove() 用於刪除檔案的擴充套件屬性,我們直接刪除了測試檔案的 user命名空間 中的 num. 屬性。再次檢視它的 xattr_list() 就只剩下 author 了。同樣地,這個函式也是支援第三個引數來指定是否是 root命名空間 的操作。

驗證系統是否支援擴充套件屬性操作

var_dump(xattr_supported($file)); // bool(true)

最後就是乙個 xattr_supported() 函式,用於驗證當前作業系統的檔案系統是否支援 xattr 相關的操作。

總結今天的內容非常地簡單淺顯,這個檔案的擴充套件屬性的功能說實話也是看到 php 中有這個功能擴充套件才回去檢視了 linux 系統中的相關文件。所以說,學習都是關聯的,當我們在學習 php 的時候,順帶著也在學習 linux ,同時更會經常接觸到 mysql 、 nginx 等應用的相關知識。專注於乙個領域,同時擴充套件其它領域的知識,才是學習的最佳方式。

測試**:

在php中操作檔案的擴充套件屬性.php

在PHP中操作檔案的擴充套件屬性

在作業系統的檔案中,還存在著一種我們可以自己定義的檔案屬性。這些屬性不是儲存在檔案內容中,也不是直接可以通過 ls al 所能看到的內容。它們可以將乙個鍵值對資訊永久得關聯到檔案上,一般現在的 linux 系統都支援這樣的檔案擴充套件屬性的功能。在作業系統中我們可以通過 setfattr getfa...

php操作檔案

實現php寫入,讀取,替換檔案內容。先解釋一下,主要用到 fopen 檔名.副檔名 操作方式 fwrite 讀取的檔案,寫入的檔案 fclose 開啟的物件變數 寫入檔案 w表示以寫入的方式開啟檔案,如果檔案不存在,系統會自動建立 file pointer fopen sb.log a fwrite...

PHP檔案處理 操作檔案

除了能夠對檔案內容進行讀寫,對檔案本身相同也能夠進行操作,如拷貝檔案 又一次命名 檢視改動日期等。php內建了大量的檔案操作函式,經常使用的檔案函式例如以下表 函式原型 函式說明 舉例bool copy string path1,string path2 將檔案從path1拷貝到path2。假設成功...