Я пытался сделать это без удачи.У меня есть скрипт php, который загружает и разархивирует файл.Здесь нет проблем.
После этого мне нужно получить разархивированные файлы и заменить все файлы корневого каталога на файлы в этой папке.Проблема в том, что папка находится в корневом каталоге.
Например: мой каталог выглядит примерно так
/
/folder 1
/folder 2
/folder 3
/file.php
/file2.php
etc...
После запуска сценария загрузки я распаковываю архив в папку с именем updateв корне каталога
/update/--UNZIPED STUFF--
Мне нужно удалить практически все файлы / каталоги из корневого каталога, за исключением папки обновления, которую, я думаю, и пару других файлов, а затем переместить файлы / папки внутри обновления.папка в корне каталога.
Есть идеи?
ОБНОВЛЕНИЕ
Хорошо, поэтому я сделалкод, который кажется правильным, но я получаю много разрешений на файл при использовании unlink или переименования.Как я могу это сделать?
Вот фрагмент кода, который я сделал
echo '<table>';
$updateContents = scandir('./');
foreach($updateContents as $number=>$fileName){
if($fileName != 'update' && $fileName != 'config.ini' && $fileName != 'layout.php' && $fileName != '..' && $fileName != '.' && $fileName != '.git' && $fileName != '.gitignore'){
if(is_dir($fileName)){
moveDownload($fileName, 'old/'.$fileName);
} else {
if(rename($fileName, 'old/'.$fileName)){
echo '<tr><td>'.$fileName.' moved successfully </td><td><font color="green">OK</font></td></tr>';
} else {
echo '<tr><td>Could not move file '.$fileName.'</td><td><font color="red">ERROR</font></td></tr>';
}
}
}
}
echo '</table>';
, и функция moveDownload - та, которую я где-то нашел здесь.Он перемещает непустую папку, и он был слегка изменен мной.
function moveDownload($src,$dst){
$dir = opendir($src);
while(false !== ($file = readdir($dir))){
if (($file != '.') && ($file != '..') && ($file != 'config.ini') && ($file != 'layout.php') && ($file != 'sbpcache') && ($file !='update')){
if (is_dir($src.'/'.$file)){
if(file_exists($dst.'/'.$file)){
rrmdir($dst.'/'.$file);
}
}
if(@rename($src . '/' . $file, $dst . '/' . $file)){
echo '<tr><td>'.$file.' moved successfully </td><td><font color="green">OK</font></td></tr>';
} else {
if(@chmod($src.'/'.$file, 0777)){
if(@rename($src . '/' . $file, $dst . '/' . $file)){
echo '<tr><td>'.$file.' moved successfully </td><td><font color="green">OK</font></td></tr>';
} else {
echo '<tr><td>Could not move file '.$file.'</td><td><font color="red">ERROR RENAME</font></td></tr>';
}
} else {
echo '<tr><td>Could not move file '.$file.'</td><td><font color="red">ERROR CHMOD</font></td></tr>';
}
}
}
}
closedir($dir);
}
Я также делаю то же самое снова, но перемещаюсь из папки обновлений.
Так что в основном сначала вместоудаляя вещи, я просто перемещаю их в папку с именем old, а затем пытаюсь переместить новые вещи, но везде возникают проблемы с разрешениями.Некоторые файлы перемещаются, некоторые нет, даже если у меня есть «sudo chmod 777 -R».Есть идеи?