関数・クラス解説

stat

version:PHP 4, PHP 5, PHP 7 (公式)

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

公式リファレンス

書式

stat ( string $filename ) : array

説明

filenameで指定されたファイルに ついての統計情報を取得します。 filename がシンボリックリンクの場合、 シンボリックリンクではなくファイルの実体の統計情報が返されます。 Windows 環境、かつ PHP 7.4.0 より前の NTS ビルドでは、 size, atime, mtime, ctime の統計情報は、シンボリックリンクの値が返されていました。

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 を返します。 *** PHP 7.4.0 以降、Windows では、この値はファイルが含まれるボリュームのシリアル番号です。 これは64ビットの 符号なし 整数です。 よって、オーバーフローする可能性があります。 これより前のバージョンでは、stat() 関数ではドライブレターを数値で表現した値 (たとえば、C: では 2) でした。 lstat() 関数では 0 でした。 **** PHP 7.4.0 以降、Windows では、この値はファイルに関連付けられた識別子です。 これは64ビットの 符号なし 整数です。 よって、オーバーフローする可能性があります。 これより前のバージョンでは、この値は常に 0 でした。 mode の値は、複数の関数によって読まれる情報が含まれています。 8進数の場合、一番右の桁から評価され、はじめの3桁が chmod() によって返されます。 次の桁は PHP によって無視されます。その次の2桁は以下のファイルタイプを示します:
mode のファイルタイプ
mode が8進数だった場合 意味
0120000 リンク
0100000 通常のファイル
0060000 ブロックデバイス
0040000 ディレクトリ
0010000 fifo
よって、たとえば 通常のファイルは 0100644 のような値になりますし、 ディレクトリは 0040755 のような値になります。 stat() はエラーの場合 FALSE を返します。
注意: PHP の数値型は符号付整数であり、 多くのプラットフォームでは 32 ビットの整数を取るため、 ファイルシステム関数の中には 2GB より大きなファイルについては期待とは違う値を返すものがあります。

エラー

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

注意

注意: 時刻の精度は、ファイルシステムによって異なることがあります。
注意: この関数の結果はキャッシュされます。詳細は、clearstatcache()を参照してください。
ヒントPHP 5.0.0 以降、この関数は、何らかの URL ラッパーと組合せて使用することができます。どのラッパーが stat() ファミリーをサポートしているかを調べるにはサポートするプロトコル/ラッパー を参照してください。

更新履歴

バージョン 説明
7.4.0 Windows では、 デバイス番号は、ファイルが含まれるボリュームのシリアル番号を返すようになりました。 そして、inode 番号は、ファイルに関連付けられた識別子を返すようになりました。
7.4.0 シンボリックリンクの場合、 size, atime, mtime, ctime の統計情報は、ファイルの実体の値が返されるようになりました。 これより前のバージョンの Windows NTS ビルドはそうではありませんでした。

サンプル

例1 stat() の例

/* ファイルの状態を取得します */ $stat = stat('C:\php\php.exe'); /*  * ファイルのアクセス日時を表示します。  * これは fileatime() をコールするのと同じです  */ echo 'アクセス日時: ' . $stat['atime']; /*  * ファイルの更新日時を表示します。  * これは filemtime() をコールするのと同じです  */ echo '更新日時: ' . $stat['mtime']; /* デバイス番号を表示します */ echo 'デバイス番号: ' . $stat['dev'];

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

/* ファイルの状態を取得します */ $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() が成功しました...';     } }

参考

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


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール