2009-12-05 31 views

回答

8

這可能意味着你的文件沒有被發現,或者:

  • ,因爲它不存在
  • 或者因爲它不是在當期的目錄
  • 或者因爲你沒有引用它的名字 - y ou沒有^^

1970年1月1日是時間「零」的日期; 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) 

假的,因爲該文件犯規」的存在,並在1970-01-0101: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

+0

@Pascal:謝謝帕斯卡的詳細解答。我得到的警告提及stat失敗的文件名和我的error_reporting已啓用 不知道爲什麼filemtime沒有得到我的文件,因爲如果我回顯它比我得到的文件名,但錯誤修改時間爲12月31日,仍然想知道爲什麼發生這種情況辦法。 – Rachel 2009-12-05 22:08:06

1

1970年1月1日0:00是Unix時代的開始。因此,由於filemtime操作失敗導致的0的時間戳與(可能)DST問題一起,是1969年12月31日。例如,您需要修復您的filemtime操作(如果您的示例不只是僞-code)加入引號的文件名:

filemtime ("filename.txt"); 
+0

它實際上是'-1'的返回值,因此它爲什麼在1969年。 – Amber 2009-12-05 22:01:27

+0

不,這就是我第一次想到的,但filemtime()在失敗時返回false(= 0)。解釋必須與夏令時有關。 – 2009-12-05 22:07:16

+0

由於filemtime轉換爲本地時區,因此它在1969年的末尾,根據您的時區遠離UTC的小時數和分鐘數進行調整。 – wallyk 2009-12-05 22:16:52

0

如果filemtime無法找到該文件,則會得到該信息。

0

不能使用

$t = filemtime(filename.txt); 

在最低限度,使用類似

$t = filemtime("filename.txt"); 
2

我有同樣的問題,並解決它通過將文件絕對路徑由之前串聯完整的物理路徑$filename作爲文件最後修改日期filemtime($physical_path.$filename)和文件大小filesize($physical_path.$file)

相關問題