PHP を使用してディレクトリ全体を再帰的にコピーする方法
ディレクトリの内容全体を別の場所にコピーするのは、PHP の一般的なタスクです。プログラミング。コピー関数はフラットなディレクトリ構造に使用できますが、複数レベルのディレクトリを扱う場合は制限に遭遇する可能性があります。
Dave は、copy ("old_location/*. *","new_location/") ですが、提供されたコードでは、ストリームが見つからず、*.* が見つからないことを示すエラーが出力されます。
この問題に対処する解決策は、次のような再帰関数を使用することです。以下のもの:
<code class="php">function recurseCopy( string $sourceDirectory, string $destinationDirectory, string $childFolder = '' ): void { $directory = opendir($sourceDirectory); if (is_dir($destinationDirectory) === false) { mkdir($destinationDirectory); } if ($childFolder !== '') { if (is_dir("$destinationDirectory/$childFolder") === false) { mkdir("$destinationDirectory/$childFolder"); } while (($file = readdir($directory)) !== false) { if ($file === '.' || $file === '..') { continue; } if (is_dir("$sourceDirectory/$file") === true) { recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file"); } else { copy("$sourceDirectory/$file", "$destinationDirectory/$childFolder/$file"); } } closedir($directory); return; } while (($file = readdir($directory)) !== false) { if ($file === '.' || $file === '..') { continue; } if (is_dir("$sourceDirectory/$file") === true) { recurseCopy("$sourceDirectory/$file", "$destinationDirectory/$file"); } else { copy("$sourceDirectory/$file", "$destinationDirectory/$file"); } } closedir($directory); }</code>
この関数は再帰を利用することで、ディレクトリ構造を横断し、必要に応じて子ディレクトリを作成できます。ディレクトリ内の各項目のファイル タイプをチェックし、必要に応じて自分自身を再帰的に呼び出してファイルをコピーしたり、ディレクトリを作成したりします。
以上がPHP を使用してディレクトリ全体を再帰的にコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。