ScotlandPHP

filectime

(PHP 4, PHP 5, PHP 7)

filectimeファイルの inode 変更時刻を取得する

説明

int filectime ( string $filename )

ファイルの inode 変更時刻を取得します。

パラメータ

filename

ファイルへのパス。

返り値

ファイルの最終更新時刻を返し、失敗した場合に FALSE を返します。 時間は Unix タイムスタンプとして返されます。

例1 filectime() の例

<?php

// 出力例 somefile.txt was last changed: December 29 2002 22:16:23.

$filename 'somefile.txt';
if (
file_exists($filename)) {
    echo 
"$filename was last changed: " date("F d Y H:i:s."filectime($filename));
}

?>

エラー / 例外

失敗したときは E_WARNING が発生します。

注意

注意:

注意: 多くの Unix ファイルシステムでは、i-ノードが変更された際、つまり、 パーミッション、所有者、グループ、または他のメタデータが書き込まれた際に、 ファイルが変更されたとみなされます。 filemtime() (この関数は、Web ページ上に "最終更新時刻" を表示させたい場合に使用するものです) および fileatime() も参照ください。

注意:

いくつかの Unix では、ファイルの ctime はファイルの作成時間として参照されます。 これは間違っています。多くの Unix ファイルシステムでは Unix ファイルの作成時間は存在しません。

注意:

時刻の精度は、 ファイルシステムによって異なることがあります。

注意: この関数の結果は キャッシュされます。詳細は、clearstatcache() を参照してください。

ヒント

PHP 5.0.0 以降、この関数は、 何らかの URL ラッパーと組合せて使用することができます。 どのラッパーが stat() ファミリーをサポートしているかを調べるには サポートするプロトコル/ラッパー を参照してください。

参考

  • filemtime() - ファイルの更新時刻を取得する

add a note add a note

User Contributed Notes 9 notes

up
9
StevieMc at example dot com
10 years ago
This method gets all the files in a directory, and echoes them in the order of the date they were added (by ftp or whatever).

<?PHP
function dirList ($directory, $sortOrder){

   
//Get each file and add its details to two arrays
   
$results = array();
   
$handler = opendir($directory);
    while (
$file = readdir($handler)) { 
        if (
$file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess"){
           
$currentModified = filectime($directory."/".$file);
           
$file_names[] = $file;
           
$file_dates[] = $currentModified;
        }   
    }
      
closedir($handler);

   
//Sort the date array by preferred order
   
if ($sortOrder == "newestFirst"){
       
arsort($file_dates);
    }else{
       
asort($file_dates);
    }
   
   
//Match file_names array to file_dates array
   
$file_names_Array = array_keys($file_dates);
    foreach (
$file_names_Array as $idx => $name) $name=$file_names[$name];
   
$file_dates = array_merge($file_dates);
   
   
$i = 0;

   
//Loop through dates array and then echo the list
   
foreach ($file_dates as $file_dates){
       
$date = $file_dates;
       
$j = $file_names_Array[$i];
       
$file = $file_names[$j];
       
$i++;
           
        echo 
"File name: $file - Date Added: $date. <br/>"";       
    }

}
?>

I hope this is useful to somebody.
up
3
javi at live dot com
8 years ago
Filemtime seems to return the date of the EARLIEST modified file inside a folder, so this is a recursive function to return the date of the LAST (most recently) modified file inside a folder.

<?php

// Only take into account those files whose extensions you want to show.
$allowedExtensions = array(
 
'zip',
 
'rar',
 
'pdf',
 
'txt'
);

function
filemtime_r($path)
{
    global
$allowedExtensions;
   
    if (!
file_exists($path))
        return
0;
   
   
$extension = end(explode(".", $path));    
    if (
is_file($path) && in_array($extension, $allowedExtensions))
        return
filemtime($path);
   
$ret = 0;
   
     foreach (
glob($path."/*") as $fn)
     {
        if (
filemtime_r($fn) > $ret)
           
$ret = filemtime_r($fn);   
           
// This will return a timestamp, you will have to use date().
    
}
    return
$ret;   
}

?>
up
1
m dot rabe at directbox dot com
7 years ago
Under Windows you can use fileatime() instead of filectime().
up
2
chuck dot reeves at gmail dot com
10 years ago
filectime running on windows reading a file from a samba share, will still show the last modified date.
up
1
soapergem at gmail dot com
8 years ago
Note that on Windows systems, filectime will show the file creation time, as there is no such thing as "change time" in Windows.
up
1
coolkoon at gmail dot com
6 years ago
You should avoid feeding the function files without a path. This applies for filemtime() and possibly fileatime() as well. If you omit the path the command will fail with the warning "filectime(): stat failed for filename.php".
up
1
faketruth at yandex dot ru
2 years ago
If you need file creation time on Mac OS X:

<?php
if ($handle = popen('stat -f %B ' . escapeshellarg($filename), 'r')) {
   
$btime = trim(fread($handle, 100));
    echo
strftime("btime: %Y.%m.%d %H:%M:%S\n", $btime);
   
pclose($handle);
}
?>
up
0
website at us dot kaspersky dot com
10 years ago
Line 37 of the code above has an error.

echo  "File name: $file - Date Added: $date. <br/>""; 

There is an extra "  after the <br/> that needs to be deleted in order for this code to work.
up
-1
laurent dot pireyn at wanadoo dot be
16 years ago
If you use filectime with a symbolic link, you will get the change time of the file actually linked to. To get informations about the link self, use lstat.
To Top