Das erste argument für die copy () - Funktion kann ein Verzeichnis sein?
$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;
UPDATE: in Pascal ist vorgeschlagen, die Antwort, hier ist mein geänderter code. Dieser funktioniert.
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);
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nein, die
copy()
Funktion ist nicht rekursiv : es kann nicht kopieren, Ordner und deren Inhalt.Aber wenn man einen Blick auf die Benutzer Notizen auf, dass die manuelle Seite finden Sie einige Vorschläge von rekursiven Implementierungen.
Beispielsweise hier ist eine rekursive Funktion vorgeschlagen, gimmicklessgpt (Zitat aus seinem post) :
Bearbeiten nach dem Bearbeiten der Frage :
Den Sie anrufen, Ihre Funktion übergabe-Parameter :
Aber Ihre Funktion ist definiert als die Einnahme von no-parameter :
Korrigieren Sie Ihre Funktion definiert, so dass es dauert, Parameter-und nicht initialisieren dieser
$src
und$dst
innerhalb der Funktion, aber auf den ersten Aufruf.ja, es kann ein Verzeichnis sein:
Schauen Sie hier für Ihre Antwort auf Verzeichnisse kopieren 🙂