関数・クラス解説
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
- ファイルへのパス。
返値
数値 | 連想配列 | 説明 |
---|---|---|
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 バイトのブロックの確保数(**) |
mode が8進数だった場合 | 意味 |
---|---|
0120000 | リンク |
0100000 | 通常のファイル |
0060000 | ブロックデバイス |
0040000 | ディレクトリ |
0010000 | fifo |
注意: 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() が成功しました...';
}
}
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール