2014-03-04 56 views
2

警告接近執行opendir資源()從PHP腳本

E_WARNING:FCLOSE(6):不是一個有效的流資源

if($handle = opendir($dir)){ 
//do stuff 
if(is_resource($handle)){ 
    fclose($handle); 
    } 
} 

尋找這給了PHP中一些舊的錯誤報告,主要關注的是closedir()接受資源,但似乎fclose()應該接受從opendir返回的資源。

我一直無法找到任何關於資源類型在PHP中的一般最佳做法,以及如何正確關閉它們。

此警告的後果是什麼?我得到內存泄漏或類似的東西?

+0

你在哪裏找到東西'FCLOSE()'應該接受'執行opendir( )'結果?這是不同的資源類型在一般 –

+0

錯誤報告說,它沒有給出一個適當的錯誤https://bugs.php.net/bug.php?id=44246 我想我得到的警告可能是錯誤已現在執行? – KristianMedK

+0

注意:該版本的PHP版本是什麼? (__5.2__)該bug中的狀態是什麼? (__關閉__)。此外,這是我第一次看到有人試圖開發應用程序,基於_bugs_而不是_documentation_(如果我已經有了一切權利) –

回答

0

按照Docs,你suppousd關閉與closedir($dh);一個目錄,

像這樣:

<?php 
$dir = "/etc/php5/"; 

if (is_dir($dir)) { 
    if ($dh = opendir($dir)) { 
     while (($file = readdir($dh)) !== false) { 
      echo "filename: $file : filetype: " . filetype($dir . $file) . "\n"; 
     } 
     closedir($dh); 
    } 
} 
?>