<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// ここのコードは記事とは何の関係もありません,ただのプレースホルダー</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"記事が始めようとしています..."</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-comment"># 合格する方法 lstat 機能のファイルを読み取る権限、サイズやタイムスタンプなどのプロパティ?</span></span><span>
毎日 PHP 開発中,多くの場合、ファイルに関する関連情報を取得する必要があります,例えば:ファイル許可、ファイルサイズ、最後の訪問時間、最終変更された時間など。。PHP 非常に強力な機能を提供します —— **</span><span><span class="hljs-title function_ invoke__">lstat</span></span><span>()**,これらのプロパティをすばやく入手するのに役立ちます。
</span><span><span class="hljs-comment">## lstat() 関数の紹介</span></span><span>
`</span><span><span class="hljs-title function_ invoke__">lstat</span></span><span>()` そして `</span><span><span class="hljs-title function_ invoke__">stat</span></span><span>()` 似ている,すべてがファイル情報を取得するために使用されます,違いはです:
- **</span><span><span class="hljs-title function_ invoke__">stat</span></span><span>()**:シンボリックリンクに従います,ターゲットファイルの情報を返します。
- **</span><span><span class="hljs-title function_ invoke__">lstat</span></span><span>()**:不シンボリックリンクに従います,代わりに、シンボリックリンク自体の情報を返します。
これは、ソフトリンクを扱うときに特に重要です。
関数プロトタイプは次のとおりです:
```php
</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-title function_ invoke__">lstat</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$filename</span></span><span>)
</span></span>
$ filename :情報が必要なファイルパス。
返品値:ファイル情報を含む配列が障害がある場合、 falseを返します。
lstat()によって返される配列には、ファイルの異なるプロパティに対応する複数の添え字とキー名が含まれています。一般的なものは次のとおりです。
開発者:デバイス番号
INO :INODEノード番号
モード:ファイルのタイプと権限( decoct()またはビット操作を介して解釈する必要があります)
nlink :ハードリンクの数
UID :ユーザーID
GID :グループID
サイズ:ファイルサイズ(バイト)
ATIME :最後のアクセス時間(UNIXタイムスタンプ)
MTIME :最後の変更時間(UNIXタイムスタンプ)
CTIME :INODE変更時間(UNIXタイムスタンプ)
次の例は、ファイルの許可、サイズ、タイムスタンプ、その他のプロパティを読み取る方法を示しています。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$filename</span></span><span> = </span><span><span class="hljs-string">"example.txt"</span></span><span>;
</span><span><span class="hljs-comment">// ファイルプロパティを取得します</span></span><span>
</span><span><span class="hljs-variable">$fileInfo</span></span><span> = </span><span><span class="hljs-title function_ invoke__">lstat</span></span><span>(</span><span><span class="hljs-variable">$filename</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$fileInfo</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイルサイズ: "</span></span><span> . </span><span><span class="hljs-variable">$fileInfo</span></span><span>[</span><span><span class="hljs-string">'size'</span></span><span>] . </span><span><span class="hljs-string">" バイト\n"</span></span><span>;
</span><span><span class="hljs-comment">// 转换ファイル許可为八进制表示</span></span><span>
</span><span><span class="hljs-variable">$permissions</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-title function_ invoke__">sprintf</span></span><span>(</span><span><span class="hljs-string">'%o'</span></span><span>, </span><span><span class="hljs-variable">$fileInfo</span></span><span>[</span><span><span class="hljs-string">'mode'</span></span><span>]), -</span><span><span class="hljs-number">4</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイル許可: "</span></span><span> . </span><span><span class="hljs-variable">$permissions</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-comment">// 出力タイムスタンプ情報</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"最後の訪問時間: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>, </span><span><span class="hljs-variable">$fileInfo</span></span><span>[</span><span><span class="hljs-string">'atime'</span></span><span>]) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"最後の変更時間: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>, </span><span><span class="hljs-variable">$fileInfo</span></span><span>[</span><span><span class="hljs-string">'mtime'</span></span><span>]) . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"inode 変更時間: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">"Y-m-d H:i:s"</span></span><span>, </span><span><span class="hljs-variable">$fileInfo</span></span><span>[</span><span><span class="hljs-string">'ctime'</span></span><span>]) . </span><span><span class="hljs-string">"\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"ファイル情報を取得できません。\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
ファイル情報を取得する必要がある場合、 lstat()とstat()の両方を使用できます。
ファイルパスがシンボリックリンクであり、表示する必要があるのがリンク自体のプロパティである場合は、 lstat()を使用する必要があります。
LSTAT()を介して、ファイルの権限、サイズ、タイムスタンプ、その他の属性を簡単に取得でき、ファイル管理、ログ分析、その他のシナリオに非常に便利になります。
<span></span>