質問: date("Y/m/d H:i",fileatime("test.php")); echo "filectime:".$c; echo "filemtime:".$m; echo "fileatime:".$a; ``` その後、text.phpのパーミッションを変更すると、filectime($c)が更新され、 test.phpにブラウザでアクセスするとfileatime($a)が更新されました。 filemtimeは説明サイトに「ファイルの更新時刻を取得する」と書いてあるし、結局、新規でファイルを作成した時の日付を取得する方法が分かりませんでした。 新規でファイルを作成した時の日付を取得する方法は、存在しないのでしょうか? 色々と探してみたのですが見つけきれませんでした。 どなたかご存知の方、お教えいただけませんでしょうか? よろしくお願いいたします。
回答: ファイルシステムに依存するはずです。 filectime の補足部分にありますが、 > > 注意: > > > いくつかの Unix では、ファイルの ctime はファイルの作成時間として参照されます。 これは間違っています。多くの Unix ファイルシステムでは Unix ファイルの作成時間は存在しません。 > > > Linuxで通常使用されるファイルシステムではファイルの作成時間という概念は存在しません。 結果として、i-nodeが更新された後に最初にファイルが作成された日時を取得する方法はファイルシステム上は提供されていません。=PHPから取得する方法もありません。 (どうしても取得したければ、ファイル自体に作成日時をテキストデータとして書き込んだり、ファイルの作成時間を管理するデータを用意したりする必要があります) 試したことはありませんが、NTFSならいけそうな雰囲気です。 参考1:ctimeがファイルの作成時刻とは限らないAdd Star 参考2:ファイルのタイムスタンプを改竄する方法