2011-05-30 65 views
7

當您在Finder中選擇一個文件並在Mac上點擊cmd + i時,您會得到該文件(實際)創建的時間以及上次修改時間。如何在Mac上獲得PHP中文件的實際創建時間?

我的問題很簡單:我怎樣才能創造的實際時間從PHP已經存在的Mac文件?現在

,其研究的話題,我已閱讀職位,說這是不可能的,但在我的世界「不可能」只意味着一件事需要更長的時間來完成。解決方法和黑客受歡迎。

我不想的mtime或相關的ctime建議,作爲最後時刻的文件被更新或修改這些只能訪問。

而且我們可能談論蘋果只有在這裏,但獨立於操作系統的解決方案,也歡迎 - 如果他們真的在所有系統上運行。

+0

POSIX未指定文件創建時間屬性 – Alnitak 2011-05-30 13:47:24

+1

BSD包含了(st_birthtime),其中包含OSX! :) – lunixbochs 2011-05-30 13:50:19

+0

我<3 BSD。我收集這意味着無論在這裏找到什麼解決方案,可能適用於其他BSD系統。 :) – Kebman 2011-05-30 14:01:40

回答

7

這個腳本是我所管理的最好的,它包裝上BSD提供的命令行工具stat拿出與inode birthtime屬性。

// stat.php 
$filename = 'test'; 

$stat = stat($filename); 
date_default_timezone_set('America/Denver'); 
echo strftime("atime: %H:%M:%S\n", $stat['atime']); 
echo strftime("mtime: %H:%M:%S\n", $stat['mtime']); 
echo strftime("ctime: %H:%M:%S\n", $stat['ctime']); 

if ($handle = popen('stat -f %B ' . escapeshellarg($filename), 'r')) { 
    $btime = trim(fread($handle, 100)); 
    echo strftime("btime: %H:%M:%S\n", $btime); 
    pclose($handle); 
} 

命令行stat工具讀取的atime,的ctime,修改時間酷似PHP的統計,但第四個「inode的誕生時間」參數出現。 BSD stat()系統調用在可用時返回st_birthtime,但我沒有找到一種方法將本地公開給PHP。

$ touch test # create a file 
$ stat test 
..."May 30 06:16:22 2011" "May 30 06:16:22 2011" "May 30 06:16:22 2011" "May 30 06:16:11 2011"... 
$ open . 
$ touch test # about one minute later 
$ stat test 
..."May 30 06:17:04 2011" "May 30 06:17:04 2011" "May 30 06:17:04 2011" "May 30 06:16:11 2011"... 

$ php stat.php 
atime: 06:52:48 
mtime: 06:17:04 
ctime: 06:17:04 
btime: 06:16:11 

下面的命令返回 inode的birthtime,這是迄今爲止我已經找到了最好的Unix時間戳。你可以用popen()proc_open()

$ stat -f %B test 
1306757771 
+0

酷!這看起來有希望。謝謝! – Kebman 2011-05-30 13:17:22

0

的運行它只是最接近你可以得到的是由filemtime函數中的最後更新的時間。

2

MacOS X有一個擴展版本的stat()系統調用,它也返回文件創建時間,但默認情況下它不會被啓用(即使在本地C代碼中),因爲生成的結構的字段與其中的字段順序不同標準的POSIX版本。

在10.6該版本是由(隱藏)符號_stat$INODE64/usr/lib/libc.dylib如果宏_DARWIN_FEATURE_64_BIT_INODE被定義,其會自動替換stat提供。

如果你能弄清楚如何從動態庫訪問符號,完成任務!

+0

酷!訪問符號似乎很難,但是......這只是一個不評論一條線的問題,還是更重要?另外,我想知道,Mac OS X 10.5有什麼不同? – Kebman 2011-05-30 13:18:11

相關問題