DO NOT use this function unless you are absolutely sure both your Apache and PHP have been compiled with the same value for -DFILE_OFFSET_BITS.
If not, this function will return the access time (or maybe even garbage) instead of the modification time due do Apache and PHP using different versions of the stat structure.
This is true regardless of Apache and PHP version.
To be on the safe side, always use the workaround already posted below:
filemtime($_SERVER['SCRIPT_FILENAME'])
getlastmod
(PHP 4, PHP 5)
getlastmod — 最終更新時刻を取得する
返り値
現在のページの最終更新時刻を返します。 この値は Unix のタイムスタンプで、そのまま date ()に渡す事ができます。エラーの場合は FALSE を返します。
例
Example#1 getlastmod() の例
<?php
// たとえば、'最終更新時刻:March 04 1998 20:43:59.' を出力します
echo "最終更新時刻: " . date ("F d Y H:i:s.", getlastmod());
?>
getlastmod
rwruck
17-Oct-2004 10:28
17-Oct-2004 10:28
19-May-2004 08:36
Setting the 'Last-Modified' header:
<?php
setlocale(LC_TIME, "C");
$ft = filemtime ('referencefile');
$localt = mktime ();
$gmtt = gmmktime ();
$ft = $ft - $gmtt + $localt;
$modified = strftime ("%a, %d %b %Y %T GMT", $ft);
?>
timeflys at users dot sourceforget dot net
21-Mar-2003 06:28
21-Mar-2003 06:28
I found issues using getlastmod() to test whether or not I was successful in setting the Last Modified date in the header. The code below shows the same Last Modified date before and after I set the Last-Modified header.
=====getlastmod
<?
//True modified date
$modified = date ("F d Y H:i:s.", getlastmod());
//artificial modified date - sent to header
$last_modified = gmdate('D, d M Y H:i:s T', (time() - 43200));
//caching prevention
header("Last-Modified: $last_modified GMT");
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
$getlast_modified = date ("F d Y H:i:s.", getlastmod());
print "True modified date(Before): $modified <p /> Date sent to header(After): $getlast_modified";
?>
I then used the PEAR, HTTP_Request class which worked, the Last-Modified date updates everytime it is requested, the desired effect.
======HTTP_Request
<?
require 'HTTP/Request.php';
$r = new HTTP_Request('http://www.sample.com/page.php');
$r->sendRequest();
$response_headers = $r->getResponseHeader();
print $response_headers["last-modified"];
?>
Richard Anderson(r85anderson at yahoo dot com)
18-Nov-2002 06:33
18-Nov-2002 06:33
for includes....
<?
//include.php
$file = __FILE__;
$lastmod = date("M d, Y @ h:ia", filemtime($file));
?>
<?
//footer.php
echo("page last modified: $lastmod");
?>
kworthington ([no@spam)] linuxmaildotorg
04-Oct-2002 07:33
04-Oct-2002 07:33
I was just informed of a workaround for the Apache 2.0 issue, do:
echo "Last modified: " . date("D F d Y h:i:s A", filemtime($_SERVER["SCRIPT_FILENAME"]));
Thanks to: Edward S. Marshall