PHP Копировать все файлы / папки из одного каталога в другой - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь заставить сценарий «сброса» работать в PHP, чтобы просто скопировать все файлы / папки из одного указанного c каталога в другой.

Я нашел множество фрагментов кода в Stackoverflow для рекурсивного копирования файлов / папок, но я не могу заставить их работать.

Мой каталог по сути выглядит так:

/public_html/folder1/reset.php
/public_html/folder1/files/
/public_html/docs/reset/files/

Файл reset.php - это файл, который я Я пытаюсь работать, и я хочу скопировать все файлы из /docs/reset/files/ в /folder1/files/, перезаписав все ...

Я пробовал следующий код, но он генерирует файл размером 500 МБ, полный ошибки

<?php 
function recurse_copy($src,$dst) { 
    $dir = opendir($src); 
    @mkdir($dst); 
    while(false !== ( $file = readdir($dir)) ) { 
        if (( $file != '.' ) && ( $file != '..' )) { 
            if ( is_dir($src . '/' . $file) ) { 
                recurse_copy($src . '/' . $file,$dst . '/' . $file); 
            } 
            else { 
                copy($src . '/' . $file,$dst . '/' . $file); 
            } 
        } 
    } 
    closedir($dir); 
}

recurse_copy("../docs/reset/", "/")

?>

Кажется, что код работает правильно, но все пути неверны.

[18-Jun-2020 07:54:33 UTC] PHP Warning: copy(/files//files/copies/index.php): failed to open stream: No such file or directory in /home/USERNAME/public_html/folder1/reset.php on line 11

Если бы я мог получить вышеуказанную работу, я был собираюсь попробовать следующее:

$src = '/full/path/to/src'; // or relative path if so desired 
$dst = '/full/path/to/dst'; // or relative path if so desired
$command = 'cp -a ' . $src . ' ' .$dst;
$shell_result_output = shell_exec(escapeshellcmd($command));

Как я предполагаю, это будет быстрее?

Я, должно быть, делаю что-то не так, и я уверен, что это будет что-то действительно незначительное, но я не могу выяснить, что я делаю не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...