Php “的代码”;删除完整目录";返回警告

Php “的代码”;删除完整目录";返回警告,php,directory,Php,Directory,我有一个文件夹,他的名字是“1”,在这个文件夹里有两个文件夹:“大图片”和“小图片” 我想删除文件夹“1”及其内容,这是代码: function removeFullDir ($dir) { $content = glob($dir."/*"); foreach ($content as $file) { if (is_dir($file)) { removeFullDir ($file); } else { unlink($file);

我有一个文件夹,他的名字是“1”,在这个文件夹里有两个文件夹:“大图片”和“小图片”

我想删除文件夹“1”及其内容,这是代码:

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

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

removeFullDir("1");
在localhost(XAMPP服务器,phpversion5.4.4)中,这段代码运行良好。在远程服务器中,此代码也起作用,但返回警告:

警告:为foreach()提供的参数无效。

在远程服务器中,php版本为5.2.42

请告诉我,为什么我会获得此警告?

发生这种情况是因为没有返回数组,这意味着根据文档,它必须返回
false
。出现错误时可能会发生这种情况,但目录为空时也可能发生这种情况:

返回包含匹配文件/目录的数组,空 如果没有匹配的文件,则返回数组;如果出现错误,则返回FALSE

注意:在某些系统上,无法区分空匹配和错误

要防止通知,请注意:

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

    // ...
}

一个可能的原因可能是open\u basedir限制,这意味着glob()返回false,它将在foreach循环中出错,因为$content不是数组,因此您可以进行如下检查:

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