オペレーティング システムのファイルには、自分で定義できるファイル属性もあります。これらのプロパティはファイルのコンテンツに保存されず、直接表示されることもありません。キーと値のペア情報をファイルに永続的に関連付けることができ、通常、現在の 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 では通常の (ユーザー) 名前空間と XATTR_ROOT (ルート コマンド空間) の 2 つの形式も提供します。
ルート名前空間の属性はスーパー ユーザーによって設定でき、他のユーザーには表示されませんが、ユーザー名前空間はファイルの権限、つまり現在操作できるユーザーに基づいて定義されます。このファイルのユーザー名前空間に設定されているこれらの拡張属性を取得します。
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() 関数は、ファイル内で定義されているすべての名前空間のキーを取得できます。また、ユーザーとルートの名前空間も区別されます。
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 パラメータを追加しない場合、ルート名前空間の内容を読み取ることができません。
var_dump(xattr_remove($file, 'Num.')); // bool(true) var_dump(xattr_list($file)); // array(1) { // [0]=> // string(6) "Author" // }
xattr_remove()は、ファイルの拡張属性を削除するために使用され、テスト ファイルのユーザー名前空間にある Num. 属性を直接削除しました。その xattr_list() を再度確認すると、作成者だけが残っています。同様に、この関数は、ルート名前空間操作であるかどうかを指定する 3 番目のパラメーターもサポートしています。
var_dump(xattr_supported($file)); // bool(true)
最後に、xattr_supported() 関数があります。これは、現在のオペレーティング システムのファイル システムが xattr 関連の操作をサポートしているかどうかを確認するために使用されます。 。
今日の内容は非常にシンプルかつ明確です このファイルの拡張属性の関数 実は、関連ドキュメントを確認する前に、PHP でこの関数拡張を見たことがありましたLinux システムでは。したがって、学習はすべて関連しています。PHP を学習するとき、Linux も学習することになります。同時に、MySQL、Nginx、その他のアプリケーションの関連知識にも触れることがよくあります。学習するための最良の方法は、1 つの領域に焦点を当てながら、他の領域の知識を広げることです。
テスト コード:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/9.在PHP中操作文件的扩展属性.php
推奨学習: php ビデオ チュートリアル
以上がPHP がファイルの拡張属性を操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。