1. 概要
「PHP」で、ファイルの作成日時を取得する方法について記述します。
2. fileXtime ファイルの日時を参照する
ファイルの日時には、参照日時・更新日時・作成日時の3種類あります。
作成日時は正確には、参考サイトにあるように最終「inode」変更日時なのですが、作成日時と考えて差し支えないと思います。
int fileatime ( string $filename ) ← 参照日時
int filemtime ( string $filename ) ← 更新日時
int filectime ( string $filename ) ← 作成日時
説明しにくいので「PHP」のマニュアルをそのまま丸写しします。
「fileatime(参照日時)」
指定したファイルの最終アクセス時刻を取得します。
「filemtime(更新日時)」
この関数は、ファイルのブロックデータが書き込まれた時間を返します。 これは、ファイルの内容が変更された際の時間です。
「filectime(作成日時)」
ファイルの inode 変更時刻を取得します。
注意:
多くの Unix ファイルシステムでは、i-ノードが変更された際、つまり、 パーミッション、所有者、グループ、または他のメタデータが書き込まれた際に、 ファイルが変更されたとみなされます。 filemtime() (この関数は、Web ページ上に "最終更新時刻" を表示させたい場合に使用するものです) および fileatime() も参照ください。
注意:
いくつかの Unix では、ファイルの ctime はファイルの作成時間として参照されます。 これは間違っています。多くの Unix ファイルシステムでは Unix ファイルの作成時間は存在しません。
注意:
時刻の精度は、 ファイルシステムによって異なることがあります。
$ ls -l .cshrc_bak
-rw-r--r-- 1 hogehoge hogehoge 1164 3月 10 2018 .cshrc_bak
$ stat -x .cshrc_bak
File: ".cshrc_bak"
Size: 1164 FileType: Regular File
Mode: (0644/-rw-r--r--) Uid: ( 1018/hogehoge) Gid: ( 1018/hogehoge)
Device: 0,89 Inode: 9075158 Links: 1
Access: Fri Apr 13 17:25:58 2018
Modify: Sat Mar 10 11:25:37 2018
Change: Fri Apr 13 17:28:42 2018
という状況で、下記のソースを書いて実行すると
<?php
$filename = './.cshrc_bak';
print("fileatime:" . date("Y年m月d日 H:i:s", fileatime($filename)) . "\n");
print("filemtime:" . date("Y年m月d日 H:i:s", filemtime($filename)) . "\n");
print("filectime:" . date("Y年m月d日 H:i:s", filectime($filename)) . "\n");
以下の結果が得られます。
fileatime:2018年04月13日 17:25:58
filemtime:2018年03月10日 11:25:37
filectime:2018年04月13日 17:28:42
3. 参考サイト
本ページは、下記のサイトを参考にさせていただきました。
「PHP: filectime - Manual」