2017-08-02 190 views
3

我使用php dir()函數從目錄獲取文件,並通過它循環。即使文件存在,php dir函數也會返回null

$d = dir('path'); 

while($file = $d->read()) { 
    /* code here */ 
} 

但這返回false,並給出

上的空

調用成員函數read()方法,但該目錄是否存在以及文件在那裏。

此外,是否有任何替代我的上述代碼?

+0

是路徑的絕對路徑?相對路徑?相對於哪裏? –

+0

使用'is_dir(path);'函數 – Jer

回答

0

如果你看看到documentation您將看到:

返回目錄的實例,或NULL以錯誤的參數,或 FALSE在另一個錯誤的情況。

所以Call to member function read() on null意味着你有一個錯誤(我認爲這是failed to open dir: No such file or directory in...)。

您可以使用file_existsis_dir來檢查給定的路徑是否是目錄以及它是否真的存在。

例子:

<?php 
... 
if (file_exists($path) && is_dir($path)) { 
    $d = dir($path); 

    while($file = $d->read()) { 
     /* code here */ 
    } 
} 
1

嘗試使用此:

if ($handle = opendir('/path/to/files')) { 
    echo "Directory handle: $handle\n"; 
    echo "Entries:\n"; 

    /* This is the correct way to loop over the directory. */ 
    while (false !== ($entry = readdir($handle))) { 
     echo "$entry\n"; 
    } 

    /* This is the WRONG way to loop over the directory. */ 
    while ($entry = readdir($handle)) { 
     echo "$entry\n"; 
    } 

    closedir($handle); 
} 

來源: http://php.net/manual/en/function.readdir.php

0

如有檢查您的文件路徑的路徑是正確的。那麼請試試這個代碼,這可能會幫助你。由於

<?php 
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); 
// Output one character until end-of-file 
while(!feof($myfile)) { 
    echo fgetc($myfile); 
} 
fclose($myfile); 
?> 
相關問題