2014-01-13 57 views
2

爲了快速起見,我正在爲我正在使用的應用程序構建文件瀏覽器。當我請求文件類型,文件大小和文件時間時,出現以下錯誤。我收到以下錯誤:來自文件類型,文件大小和文件時間的警告

文件類型:

Warning: filetype() [function.filetype]: Lstat failed 

作品尺寸:

Warning: filesize() [function.filesize]: stat failed 

文件時間:顯示我的文件已經在早上03:00:00修改01/01/1970。那我當然不會編輯這些文件!

無論如何,這是我的代碼。我爲迴音的意大利麪條道歉!請幫忙!

<table class="tftable"> 
<tr><th>Name</th><th>Type</th><th>Last Modified</th><th>Size</th></tr> 

<?php 
if($_GET['folder'] == "") 
{ 
$baseusrdir = "/userfiles/john"; 
} 
else 
{ 
$baseusrdir = "/userfiles/john/".$_GET['folder']; 
} 

$listdir = scandir(".".$baseusrdir); 
$lstdr = $_GET['folder']; 

foreach($listdir as $lstdr) 
{ 
    if($lstdr != "." && $lstdr !="..") 
    { 
    echo "<tr>"; 
    echo "<td><a href='files.php?folder=".$_GET['folder']."/$lstdr'>".$lstdr."</a></td>"; 
    echo "<td>"; 
    echo $baseusrdir."/".$lstdr; 
    echo filetype($baseusrdir."/".$lstdr); 
    echo "</td><td>"; 
    echo date ("d/m/Y h:i:s A.", filemtime($entry)); 
    echo "</td><td>"; 
    echo round((filesize($lstdr)/1000), 2); 
    echo "</td>"; 
    echo "</tr>"; 
    } 
} 
$arr = explode('/' , $_GET['folder']); 
for($i=0;$i<(count($arr)-1);$i++){ 
    if(!empty($arr[$i])){ 
     $link.="/".$arr[$i]; 
    } 

} 
echo "</br><a href='files.php?folder=$link'>back</a>"; 
?> 
</table> 
+1

[因爲'Lstat'和'stat'是非常基本的Unix/Linux命令(HTTPS ://en.wikipedia.org/wiki/Stat_(Unix))這可能是一個有趣的服務器設置或文件權限問題相關的問題。請檢查您是否可以訪問來自PHP外部的文件以及哪些所有者和權限設置給他們。 – feeela

+4

如果你不逃避那些GET數據,你就會受到傷害。 – Daedalus

+0

@feeela:我在另一臺運行Windows的計算機上試過這個,我得到了同樣的警告。 – ahmadux

回答

2

ABHI耆那教 - 報價:

文件類型的最常見的原因()提出這個警告,而不是 顯示文件類型()輸出(它實際上返回NULL),如果 您碰巧只傳遞'Dir或文件名'而不是完整的'絕對或相對路徑'到該'文件或目錄' 。它仍然可以讀取 該文件並將其文件類型作爲「文件」返回,但對於Dir,它會顯示 警告並輸出NULL。例如:$ pathToFile ='/ var/www'; $ file = 'test.php'; $ dir ='somedir';

http://php.net/manual/en/function.filetype.php - 見評析

+0

爲什麼你鏈接到法國網站?英國人有同樣的評論。 – Daedalus

+1

哈哈,沒有注意到。直接去評論部分:)修復 – LorDex

+0

@LorDex我曾嘗試添加解決方案。正如你所看到的,我有'echo filetype($ baseusrdir。「/」。$ lstdr);'。這不適用於文件或文件夾。我已經嘗試過沒有$ baseusrdir和。 – ahmadux

1

要獲取文件類型,我用這個函數:

function getFileType($file){ 
    $path_chunks = explode("/", $file); 
    $thefile = $path_chunks[count($path_chunks) - 1]; 
    $dotpos = strrpos($thefile, "."); 
    return strtolower(substr($thefile, $dotpos + 1)); 
} 
相關問題