現在の位置: ホーム> 最新記事一覧> LSTAT関数を介したファイルの許可、サイズ、タイムスタンプ、その他のプロパティを読み取る方法は?

LSTAT関数を介したファイルの許可、サイズ、タイムスタンプ、その他のプロパティを読み取る方法は?

gitbox 2025-09-09
<span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>

&lt;hr&gt;

</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">&lt;?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">?&gt;</span></span><span>
</span></span>

要約します

  • ファイル情報を取得する必要がある場合、 lstat()stat()の両方を使用できます。

  • ファイルパスがシンボリックリンクであり、表示する必要があるのがリンク自体のプロパティである場合は、 lstat()を使用する必要があります。

  • LSTAT()を介して、ファイルの権限、サイズ、タイムスタンプ、その他の属性を簡単に取得でき、ファイル管理、ログ分析、その他のシナリオに非常に便利になります。

 <span></span>