stat

(PHP 4, PHP 5, PHP 7)

statファイルに関する情報を取得する

説明

stat ( string $filename ) : array

filenameで指定されたファイルに ついての統計情報を取得します。 filename がシンボリックリンクの場合、 シンボリックリンクではなくファイルの実体の統計情報が返されます。

lstat() はシンボリックリンクの統計情報を返すという違いを除いて stat() と等価です。

パラメータ

filename

ファイルへのパス。

返り値

stat()fstat() の結果のフォーマット
数値 連想配列 説明
0 dev デバイス番号
1 ino inode 番号(*)
2 mode inode プロテクトモード
3 nlink リンク数
4 uid 所有者のユーザー ID(*)
5 gid 所有者のグループ ID(*)
6 rdev inode デバイス の場合、デバイスの種類
7 size バイト単位のサイズ
8 atime 最終アクセス時間 (Unix タイムスタンプ)
9 mtime 最終修正時間 (Unix タイムスタンプ)
10 ctime 最終 inode 変更時間 (Unix タイムスタンプ)
11 blksize ファイル IO のブロックサイズ(**)
12 blocks 512 バイトのブロックの確保数(**)
* Windows では常に 0 となります。

** st_blksize タイプをサポートするシステムでのみ有効です。 その他のシステム(例えば Windows)では -1 を返します。

stat() はエラーの場合 FALSE を返します。

注意: PHP の数値型は符号付整数であり、 多くのプラットフォームでは 32 ビットの整数を取るため、 ファイルシステム関数の中には 2GB より大きなファイルについては期待とは違う値を返すものがあります。

エラー / 例外

失敗した場合は E_WARNING が発生します。

例1 stat() の例

<?php
/* ファイルの状態を取得します */
$stat stat('C:\php\php.exe');

/*
 * ファイルのアクセス日時を表示します。
 * これは fileatime() をコールするのと同じです
 */
echo 'アクセス日時: ' $stat['atime'];

/*
 * ファイルの更新日時を表示します。
 * これは filemtime() をコールするのと同じです
 */
echo '更新日時: ' $stat['mtime'];

/* デバイス番号を表示します */
echo 'デバイス番号: ' $stat['dev'];
?>

例2 stat() の情報を touch() と組み合わせる例

<?php
/* ファイルの状態を取得します */
$stat stat('C:\php\php.exe');

/* 情報の取得に失敗した? */
if (!$stat) {
    echo 
'stat() のコールに失敗しました...';
} else {
    
/*
     * アクセス日時を、現在のアクセス日時の
     * 一週間後に設定します
     */
    
$atime $stat['atime'] + 604800;

    
/* ファイルを作成します */
    
if (!touch('some_file.txt'time(), $atime)) {
        echo 
'ファイルの作成に失敗しました...';
    } else {
        echo 
'touch() が成功しました...';
    }
}
?>

注意

注意:

時刻の精度は、 ファイルシステムによって異なることがあります。

注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。

ヒント

PHP 5.0.0 以降、この関数は、 何らかの URL ラッパーと組合せて使用することができます。 どのラッパーが stat() ファミリーをサポートしているかを調べるには サポートするプロトコル/ラッパー を参照してください。

参考

  • lstat() - ファイルあるいはシンボリックリンクの情報を取得する
  • fstat() - オープンしたファイルポインタからファイルに関する情報を取得する
  • filemtime() - ファイルの更新時刻を取得する
  • filegroup() - ファイルのグループを取得する