Le premier argument de copie() la fonction ne peut pas être un répertoire?
$base = dirname(__FILE__).'/themes/';
$target = dirname( STYLESHEETPATH ).'/';
$directory_folders = new DirectoryIterator($base);
foreach ($directory_folders as $folder)
{
if (!$folder->isDot()) {
echo '<p>source: '.$folder->getRealPath();
//returns: C:\xampplite\htdocs\test\wp-content\plugins\test\themes\testtheme-1
echo '<br>target: '.$target;
//returns: C:\xampplite\htdocs\test/wp-content/themes/
copy($folder->getRealPath(), $target);
//returns: Error. The first argument to copy() function cannot be a directory
}
}die;
Mise À JOUR: le Pascal proposition de réponse, voici mon code amendé. Les travaux de cette.
function recurse_copy(){
$src = dirname(__FILE__).'/themes/';
$dst = dirname( STYLESHEETPATH ).'/';
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) )
{
if (( $file != '.' ) && ( $file != '..' ))
{
if ( is_dir($src . '/' . $file) ) {
recurse_copy_recurse($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
function recurse_copy_recurse($src,$dst){
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) )
{
if (( $file != '.' ) && ( $file != '..' ))
{
if ( is_dir($src . '/' . $file) ) {
recurse_copy_recurse($src . '/' . $file,$dst . '/' . $file);
}
else {
copy($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}
Vous devez vous connecter pour publier un commentaire.
Non, le
copier()
fonction n'est pas récursive : il ne peut pas copier les dossiers et leur contenu.Mais si vous jetez un oeil à la utilisateurs de notes sur cette page de manuel, vous trouverez des propositions de récursive implémentations.
Par exemple, voici un appel récursif à la fonction proposée par gimmicklessgpt (citant son poste) :
Modifier une fois la modification de la question :
Vous appelez votre fonction en lui passant les paramètres :
Mais votre fonction est définie comme ne prenant pas de paramètre :
Vous devriez corriger votre fonction de la définition, il prend des paramètres -- et pas initialiser ces
$src
et$dst
l'intérieur de la fonction, mais sur son premier appel.oui, il ne peut pas être un répertoire:
Regardez ici pour votre réponse à la copie des répertoires 🙂