filectime

関数の概要

PHPの filectime 関数は、指定したファイルの作成時刻またはinode(ファイルのメタデータ)変更時刻を取得するための関数です。主にファイルの状態が最後に変更された日時を調べたい場合に利用されます。ただし、ファイルの「作成」日時ではなく、Windows環境でのみ実際の作成時間を返すことがあり、Unix系環境ではinodeの最終変更時刻が返される点に注意が必要です。

パラメータの説明

  • filename : string — 時刻を取得したいファイルのパス名を指定します。絶対パスや相対パスを用いることができます。

戻り値

filectime は、指定したファイルの作成時刻またはinodeの変更時刻を Unix タイムスタンプ(1970年1月1日からの秒数)で返します。ファイルが存在しない場合やエラーが発生した場合は false を返します。

使用例

基本的な使い方

<?php
$filename = 'example.txt';
$ctime = filectime($filename);

if ($ctime !== false) {
    echo "ファイルの作成・変更日時: " . date('Y-m-d H:i:s', $ctime);
} else {
    echo "ファイルが見つかりません。";
}
?>

この例では、example.txt の作成またはinode変更時刻を取得し、日付形式で表示しています。ファイルが存在しない場合はエラー表示を出します。

ファイルの変更日時との違いを比べる例

<?php
$filename = 'example.txt';
$ctime = filectime($filename);
$mtime = filemtime($filename);

echo "inode変更日時 (filectime): " . date('Y-m-d H:i:s', $ctime) . "<br>";
echo "内容更新日時 (filemtime): " . date('Y-m-d H:i:s', $mtime);
?>

filectime はinodeの変更時刻を返し、ファイルの権限変更や名前変更などでも更新されます。一方、filemtime はファイル内容の最終変更時刻を返します。この例では両者の違いを比較できます。

ファイルの作成時刻を確認(Windows環境の場合)

<?php
$filename = 'C:\path\to\file.txt';
$ctime = filectime($filename);

if ($ctime !== false) {
    echo "作成日時: " . date('Y-m-d H:i:s', $ctime);
} else {
    echo "ファイルが存在しません。";
}
?>

Windows環境では、この関数はファイル作成日時を返すため、正確に作成した日時が知りたいときに有効です。

関連する関数

  • filemtime — ファイルの内容が最後に更新された日時を取得
  • fileatime — ファイルが最後にアクセスされた日時を取得
  • stat — ファイルの詳細な情報をまとめて取得

まとめ

filectime はファイルの作成時刻またはinodeの変更時刻を取得するのに便利な関数です。Unix環境では作成日時とは異なりinode更新時刻が返されるため、その違いを理解した上で利用する必要があります。実務でファイルの状態を管理・監視する際には、filemtime と組み合わせて使うことでより正確なファイル更新情報を得られます。初心者にも使いやすく、ファイル操作での基本的な時刻情報取得に役立つ関数です。