stat

関数の概要

PHPの stat 関数は、ファイルの詳細な情報を取得するための関数です。指定したファイルのサイズ、アクセス権、最終更新日時などのメタデータを配列で返します。ファイルの状態を確認したい場合に非常に役立ちます。

パラメータの説明

  • filename:情報を取得したいファイルのパスを文字列で指定します。

戻り値

ファイルの詳細情報を格納した配列を返します。もしファイルが存在しない場合やアクセスできない場合は false を返します。返される配列は以下のような情報が含まれています:

  • 0または'dev': デバイス番号
  • 1または'ino': iノード番号
  • 2または'mode': ファイルのモード(アクセス権など)
  • 3または'nlink': ハードリンク数
  • 4または'uid': 所有者のユーザーID
  • 5または'gid': 所有者のグループID
  • 6または'rdev': 特殊なデバイスID(もしあれば)
  • 7または'size': ファイルのサイズ(バイト単位)
  • 8または'atime': 最終アクセス日時のタイムスタンプ
  • 9または'mtime': 最終更新日時のタイムスタンプ
  • 10または'ctime': 状態変更日時のタイムスタンプ
  • 11または'blksize': ブロックサイズ
  • 12または'blocks': 割り当てられたブロック数

使用例

基本的な使い方

<?php
$file = 'example.txt';
$fileInfo = stat($file);
if ($fileInfo !== false) {
    echo "ファイルサイズ: " . $fileInfo['size'] . " バイト";
} else {
    echo "ファイルが見つかりません。";
}
?>

指定したファイルのサイズを取得し、表示する基本的な例です。

ファイルの最終更新日時を取得する

<?php
$file = 'example.txt';
$fileInfo = stat($file);
if ($fileInfo !== false) {
    echo "最終更新日時: " . date('Y-m-d H:i:s', $fileInfo['mtime']);
} else {
    echo "ファイルが存在しません。";
}
?>

statで得られる最終更新日時のタイムスタンプを、人が読みやすい形式に変換して表示しています。

複数のファイル情報をまとめて取得する

<?php
$files = ['example.txt', 'test.jpg', 'data.csv'];
foreach ($files as $file) {
    $info = stat($file);
    if ($info !== false) {
        echo $file . " のサイズ: " . $info['size'] . " バイト<br>";
        echo $file . " の最終アクセス: " . date('Y-m-d H:i:s', $info['atime']) . "<br><br>";
    } else {
        echo $file . " は存在しません。<br><br>";
    }
}
?>

複数のファイルに対して stat を実行し、それぞれのサイズとアクセス日時を取得・表示しています。

関連する関数

  • lstat : シンボリックリンクの情報を取得する
  • filectime : ファイルの状態変更日時を取得する
  • filemtime : ファイルの最終更新日時を取得する
  • filesize : ファイルのサイズを取得する
  • fileatime : ファイルの最終アクセス日時を取得する

まとめ

stat関数はファイルに関する詳細な情報を一括で取得できる便利な関数です。アクセス権や所有者情報、ファイルサイズ、タイムスタンプなど多様な情報を扱えるため、ファイル操作を行う際には覚えておくと非常に役立ちます。また、用途に応じて lstatfilemtime などの関連関数と併用することで、より柔軟なファイル管理が可能です。