Я перепробовал целый ряд исправлений для своей проблемы, но не нашел решения, которое работает ...
Проблема проста ...
Допустим, у вас есть такая структура каталогов:
/website
/admin
/phpscript.php
/img
/folder1
/image1.png
/image2.png
То, что я в основном пытаюсь сделать, это:
Создать папку ... например: folder2
/website
/admin
/phpscript.php
/img
/folder1
/image1.png
/image2.png
/folder2
, а затем переместите image1 и image2 в папку2
Сценарий php находится в admin , где я разработал действие перемещения, которое будет выполняться.
Я пытался:
rename('../img/folder1/image1.png', '../img/folder2/image1.png');
, что не удалось
copy('../img/folder1/image1.png', '../img/folder2/image1.png');
, что также не удалось
Я могу использовать копирование и переименование, когда путь к файлу совпадает ... например:
rename('../img/folder1/image1.png', '../img/folder1/image3.png');
Это переименовано из image1.png в image3.png (image1.png больше не существует на сервере, а image3.png был создан сервером)
copy('../img/folder1/image1.png', '../img/folder1/image3.png');
Это сделало дубликат image1.png с именем image3.png (оба image1.png и image3.png были на сервере)
Там все разрешения для папок на сервере Apache
... И я заметил, что вы можете сделать:
file_get_contents('../img/folder1/image1.png')
and then do
file_put_contents('../img/folder2/image1.png')
пока папка существует ... по какой-то причине она не любит перемещаться, когда mkdir () используется непосредственно перед file_put_contents ()
Это в основном мой код:
$path = "img/"; //Generated somewhere in code above
$old_folder = "folder1/"; //Generated somewhere in code above
$folder = "folder2/"; //Generated somewhere in code above
$tmp_old_path = "../$path$old_folder";
$tmp_new_path = "../$path$folder";
mkdir($tmp_new_path);
$FP = scandir($tmp_old_path);
foreach ($FP as $key => $val){
if($val != '.' && $val != '..'){
$str_contents = file_get_contents($tmp_old_path.$val);
file_put_contents($tmp_new_path.$val, $str_contents);
}
}