我是php的新手,所以请不要介意我问这个问题,但我真的很困惑为什么filemtime(filename.txt)
给我的1969年12月31日作为我上次修改时间?
答案 0 :(得分:8)
这可能意味着找不到您的文件:
filemtime
会返回false
所以,1969年12月31日的零日期/时间......根据你所在的地区,我想;我自己,用这段代码:
$filemtime = filemtime(filename.txt);
$formated = date('Y-m-d H:i:s', $filemtime);
var_dump($filemtime, $formated);
得到这个输出:
boolean false
string '1970-01-01 01:00:00' (length=19)
false,因为文件不存在,而1970-01-01
位于01:00
,因为我的语言环境(我在法国,UTC + 1小时)
请注意,我还会收到一些通知和警告:
Notice: Use of undefined constant filename - assumed 'filename'
Notice: Use of undefined constant txt - assumed 'txt'
Warning: filemtime() [function.filemtime]: stat failed for filenametxt
error_reporting
和/或display_errors
已启用?
答案 1 :(得分:2)
我遇到了同样的问题并通过将$filename
之前的完整物理路径作为文件最后修改日期filemtime($physical_path.$filename)
和文件大小filesize($physical_path.$file)
连接起来,使文件路径绝对,从而解决了这个问题。
答案 2 :(得分:1)
1970年1月1日0:00是Unix纪元的开始。因此,时间戳为0,这是文件时间操作失败的结果,以及(可能)DST问题,是1969年12月31日。例如,您需要修复filemtime操作(如果您的示例不仅仅是伪-code)通过在文件名中添加引号:
filemtime ("filename.txt");
答案 3 :(得分:0)
如果filemtime找不到该文件,则会收到此信息。
答案 4 :(得分:0)
你不能使用
$t = filemtime(filename.txt);
至少使用类似
的内容$t = filemtime("filename.txt");