stat
ファイルに関する情報を取得する
&reftitle.description;
arrayfalsestat
stringfilename
filenameで指定されたファイルに
ついての統計情報を取得します。
filename がシンボリックリンクの場合、
シンボリックリンクではなくファイルの実体の統計情報が返されます。
Windows 環境、かつ PHP 7.4.0 より前の NTS ビルドでは、
size,
atime, mtime, ctime
の統計情報は、シンボリックリンクの値が返されていました。
lstat
はシンボリックリンクの統計情報を返すという違いを除いて
stat と等価です。
&reftitle.parameters;
filename
ファイルへのパス。
&reftitle.returnvalues;
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 でした。
***** Windows では、
読み取り専用のファイル属性に従って、
書き込み可能のパーミッションビットが設定されます。
そして、この値は全てのユーザ、グループ、
オーナーについて、同じ値が報告されます。
is_writable
とは異なり、ACL は考慮されません。
mode の値は、複数の関数によって読まれる情報が含まれています。
8進数の場合、一番右の桁から評価され、はじめの3桁が chmod によって返されます。
次の桁は PHP によって無視されます。その次の2桁は以下のファイルタイプを示します:
mode のファイルタイプ
mode が8進数だった場合
意味
0140000
ソケット
0120000
リンク
0100000
通常のファイル
0060000
ブロックデバイス
0040000
ディレクトリ
0020000
キャラクタデバイス
0010000
fifo
よって、たとえば 通常のファイルは 0100644 のような値になりますし、
ディレクトリは 0040755 のような値になります。
stat はエラーの場合 &false; を返します。
&fs.file.32bit;
&reftitle.errors;
失敗した場合は E_WARNING が発生します。
&reftitle.changelog;
&Version;
&Description;
7.4.0
Windows では、
デバイス番号は、ファイルが含まれるボリュームのシリアル番号を返すようになりました。
そして、inode 番号は、ファイルに関連付けられた識別子を返すようになりました。
7.4.0
シンボリックリンクの場合、
size, atime, mtime,
ctime の統計情報は、ファイルの実体の値が返されるようになりました。
これより前のバージョンの Windows NTS ビルドはそうではありませんでした。
&reftitle.examples;
stat の例
]]>
stat の情報を touch と組み合わせる例
]]>
&reftitle.notes;
¬e.filesystem-time-res;
¬e.clearstatcache;
&tip.fopen-wrapper.stat;
&reftitle.seealso;
lstat
fstat
filemtime
filegroup
SplFileInfo