Copy() ne fonctionne qu'avec des fichiers.
Les commandes DOS copy et Unix cp copieront de manière récursive - la solution la plus rapide est donc de lancer un shell et de les utiliser, par exemple
`cp -r $src $dest`;
Sinon, vous devrez utiliser l'option opendir
/ readdir
o scandir
pour lire le contenu du répertoire, itérer à travers les résultats et si is_dir retourne vrai pour chacun d'entre eux, faire une récursion dans le répertoire.
par exemple
function xcopy($src, $dest) {
foreach (scandir($src) as $file) {
if (!is_readable($src . '/' . $file)) continue;
if (is_dir($src .'/' . $file) && ($file != '.') && ($file != '..') ) {
mkdir($dest . '/' . $file);
xcopy($src . '/' . $file, $dest . '/' . $file);
} else {
copy($src . '/' . $file, $dest . '/' . $file);
}
}
}
1 votes
Les éditeurs : Etes-vous sûr que
"old_location/."
était juste une faute de frappe ?0 votes
Rich Rodecker a un script sur son blog qui semble faire exactement cela. visible-form.com/blog/copy-directory-in-php
0 votes
@Felix : Je me demandais la même chose. J'ai fait un retour en arrière à la première révision, mais il n'y a pas eu de changement.
"old_location/*.*
. Je ne peux pas trouver une révision contenant"old_location/."
.0 votes
@Asaph : Votre rollback était correct, regardez l'historique... Je voulais dire
copy ("old_location/.","new_location/");
3 votes
@dave Quand allez-vous prendre un accepté :) ?