2012-10-12 28 views
0

我有文件夾,他的名字是「1」,此文件夾中的2個文件夾:「big_images」和「small_images」代碼爲「刪除完整目錄」返回警告

我想刪除文件夾中的「1」和他的內容,這是代碼:

function removeFullDir ($dir) { 
$content = glob($dir."/*"); 

foreach ($content as $file) { 
    if (is_dir($file)) { 
     removeFullDir ($file); 
    } 
    else { 
     unlink($file); 
    } 
} 
    rmdir($dir); 
} 

removeFullDir("1"); 

在本地主機(服務器XAMPP,PHP版本5.4.4)此代碼的工作好。在遠程服務器上的代碼也可以,但是回報警告:

警告:在遠程服務器的foreach()

提供了無效的說法,PHP版本是42年2月5日

請你告訴我,爲什麼獲得我這個警告?

回答

1

發生這種情況是因爲glob未返回數組,這意味着基於文檔必須返回false。當有錯誤就會發生這種情況,但是當該目錄恰好是空的,也可能發生:

返回包含匹配的文件/目錄,空 數組的數組,如果沒有文件匹配或FALSE的錯誤。

注意:在某些系統上,不可能區分空匹配和錯誤。

爲了防止該通知只是警惕它:

function removeFullDir ($dir) { 
    $content = glob($dir."/*"); 
    if(!$content) { 
     return; 
    } 

    // ... 
} 
1

一個可能的原因可能是的open_basedir限制,這意味着水珠()返回false,它會在foreach循環爲$錯誤內容不是陣列,所以你可以檢查像:

//before foreach 
if(is_array($content) && count($content) > 0) {