0

私はフォルダを持っています。彼の名前は「1」です。このフォルダには「big_images」と「small_images」の2つのフォルダがあります。

フォルダ「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バージョンは5.2.42です

教えてください、なぜ私にこの警告を受け取るのですか?

4

2 に答える 2

1

これはglob、配列を返さないために発生します。つまり、ドキュメントに基づいて、を返す必要がありfalseます。これは、エラーが発生した場合に発生する可能性がありますが、ディレクトリが空の場合にも発生する可能性があります。

一致したファイル/ディレクトリを含む配列を返します。一致したファイルがない場合は空の配列を返し、エラーの場合はFALSEを返します。

注:一部のシステムでは、空の一致とエラーを区別することができません。

通知を防ぐには、それを防ぐだけです。

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

    // ...
}
于 2012-10-12T09:19:15.160 に答える
1

考えられる理由の1つは、open_basedir制限である可能性があります。これは、glob()がfalseを返し、 $ contentが配列ではないため、foreachループでエラーが発生することを意味します。

//before foreach
if(is_array($content) && count($content) > 0) {
于 2012-10-12T09:22:35.757 に答える