0

あるフォルダから別のフォルダにすべてのファイルを移動したい。私のコードは次のとおりです。これで、templatsフォルダーからすべてのファイルをコピーするフォルダーを作成しました

$doit = str_replace(" ", "", $slt['user_compeny_name']);
mkdir("$doit");
$source = "templat/";
$target = $doit . "/";
$dir = opendir($source);
while (($file = readdir($dir)) !== false) {
    copy($source . $file, $target . $file);
}

それは正常に動作します。すべてのファイルをコピーしますが、copy() 関数の最初の引数をディレクトリにすることはできませんという警告を出します

誰でもすぐに私を助けることができます

4

5 に答える 5

4

Readdirは、他のdirや、のような「仮想」dirを含む、ディレクトリ内のすべての子を読み取ります。および..(ルートおよび親ディレクトリへのリンク、それぞれ)これらをチェックし、copy()これらのインスタンスの機能を防止する必要があります。

while (($file = readdir($dir)) !== false)
{
    if(!is_dir($file))
    {
        copy($source.$file, $target.$file);
    }
}
于 2009-10-12T11:25:04.897 に答える
3
if ($file != "." && $file != "..") {
// copy
}
于 2009-10-12T11:23:36.303 に答える
3

ディレクトリの一番上にある.とファイルを考慮していません。..これは、最初にコピーしようとするのが「\template」であることを意味します。これは、ディレクトリをコピーしようとするのと同じです。

次のようなものを追加するだけです。

if ($file !== "." && $file !== "..")
...
于 2009-10-12T11:25:26.707 に答える
3

opendir()アイテムが含ま.れ、ドキュメント..に従って。

他のコメントのコードを使用して、これらを除外する必要があります。

于 2009-10-12T11:26:10.547 に答える