Я пытаюсь заставить сценарий «сброса» работать в 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));
Как я предполагаю, это будет быстрее?
Я, должно быть, делаю что-то не так, и я уверен, что это будет что-то действительно незначительное, но я не могу выяснить, что я делаю не так.