PHP - よく使う関数 - ファイルシステム - 作成日時取得


 クラウディア


1. 概要
2. fileXtime ファイルの日時を参照する
3. 参考サイト

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