區分快捷方式在Windows中,我打開一個目錄,讀取文件,併爲每個文件,運行統計的大小來確定,等PHP LSTAT命令無法在Windows
的問題是,當我運行統計在文件夾SHORTCUT上,它以FOLDER的形式返回,並且我看不到mode
位掩碼中可能表明這一點的任何地方。這適用於c:\Documents and Settings\myUserName\
中的所有文件夾快捷方式。
對於這些快捷鍵,is_file
返回false
,is_dir
回報true
和is_link
不XP支持。
下面是我的代碼的摘錄(已下調,因此可能有錯誤):
if(([email protected]($root))!==false){
while (false !== ($file = readdir($h))){
if(!($file=="." || $file=="..")){
if($stat = @lstat($root . $file)){
$ary[0] = $file;
$ary[1] = $root;
$ary[2] = Date("m/d/y H:i:s", $stat['mtime']);
if($stat['mode'] & 040000){
$ary[3]="dir";
$ary[4]=0;
}else{
$ary[3] ="file";
$ary[4] = $stat['size'];
}
echo(json_encode($ary));
}
}
}
}
針對此變通辦法將不勝感激...
編輯:Winterblood的解決方案几乎工作
首先 - 我的壞 - 它是一個win7機器。
感謝Winterblood的快速週轉 - 這工作了幾個快捷鍵,和PHP手冊只是說,...但是,
C:\用戶\ MyUserName輸入\應用程序數據\本地\應用數據
(和其他)仍然作爲目錄回來,而winSCP正確地將它們視爲快捷方式。事實上,'模式'是040777,與許多實際文件夾完全一樣。
其他建議?
該死的 - 我在我的代碼中輸入了一個小小的'l',並聽到了天使的鐘聲。 – alfadog67 2013-05-09 23:58:50
差不多做到了......我調整了我原來的帖子,以反映當前的情況。 – alfadog67 2013-05-10 16:02:15
據我所知,%LocalAppData%是一個真正的文件夾。如果lstat報告它是一個真實的文件夾,但WinSCP報告它是一個鏈接,我會更加質疑軟件,而不是語言。 – 2013-05-11 01:54:52