Как скопировать файл из одного каталога в другой, используя PHP?

158

Скажем, у меня есть файл test.phpв fooкаталоге, а также bar. Как я могу заменить bar/test.phpс foo/test.phpиспользованием PHP? Я на Windows XP, кроссплатформенное решение было бы здорово, но окна предпочтительнее.

Нажмите Upvote
источник

Ответы:

285

Вы можете использовать copy()функцию:

// Will copy foo/test.php to bar/test.php
// overwritting it if necessary
copy('foo/test.php', 'bar/test.php');


Цитирую пару релевантных предложений со страницы руководства:

Делает копию исходного файла в dest.

Если целевой файл уже существует, он будет перезаписан.

Паскаль МАРТИН
источник
8
Имеет ли copy( 'foo/test.php', 'bar/test.php' )создать barкаталог , если он уже не существует?
Генрирайт
1
Нет @henrywright, он не создает сами каталоги. Вы должны сделать это вручную. проверьте это на руководстве по PHP
Haseeb Zulfiqar
25

Вы можете использовать функцию rename () :

rename('foo/test.php', 'bar/test.php');

Это однако переместит файл не копировать

Dizzi
источник
22
Интересно, почему названная функция переименовывает и перемещает ноты или что-то в этом роде
Seph
@ themis Я тоже хотел бы, чтобы они назвали функцию move. Было бы интуитивно понятно, если бы у вас была небольшая экспозиция в Linux.
Fr0zenFyr
4
@themis, потому что rename('foo/test1.php', 'foo/test2.php');;)
Ананд Сингх
8

Вы можете скопировать и мимо это поможет вам

<?php
$file = '/test1/example.txt';
$newfile = '/test2/example.txt';
if(!copy($file,$newfile)){
    echo "failed to copy $file";
}
else{
    echo "copied $file into $newfile\n";
}
?>
Мукеш Джахар
источник
7

Лучший способ скопировать все файлы из одной папки в другую, используя PHP

<?php
$src = "/home/www/example.com/source/folders/123456";  // source folder or file
$dest = "/home/www/example.com/test/123456";   // destination folder or file        

shell_exec("cp -r $src $dest");

echo "<H2>Copy files completed!</H2>"; //output when done
?>
Yogendra - разработчик электронной коммерции
источник
1

Привет, ребята, хотел также добавить, как копировать с помощью динамического копирования и вставки.

Допустим, мы не знаем фактическую папку, которую создаст пользователь, но мы знаем, что в эту папку нам нужны файлы, которые нужно скопировать, чтобы активировать некоторые функции, такие как удаление, обновление, просмотр и т. д.

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

    $dirPath1 = "users/$uniqueID"; #creating main folder and where $uniqueID will be called by a database when a user login.
    $result = mkdir($dirPath1, 0755);
            $dirPath2 = "users/$uniqueID/profile"; #sub folder
            $result = mkdir($dirPath2, 0755);
                $dirPath3 = "users/$uniqueID/images"; #sub folder 
                $result = mkdir($dirPath3, 0755);
                    $dirPath4 = "users/$uniqueID/uploads";#sub folder
                    $result = mkdir($dirPath4, 0755);
                    @copy('blank/dashboard.php', 'users/'.$uniqueID.'/dashboard.php');#from blank folder to dynamic user created folder
                    @copy('blank/views.php', 'users/'.$uniqueID.'/views.php'); #from blank folder to dynamic user created folder
                    @copy('blank/upload.php', 'users/'.$uniqueID.'/upload.php'); #from blank folder to dynamic user created folder
                    @copy('blank/delete.php', 'users/'.$uniqueID.'/delete.php'); #from blank folder to dynamic user created folder

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

Махи Нгубане
источник
0

Вы можете использовать как rename (), так и copy ().

Я предпочитаю использовать переименование, если мне больше не требуется, чтобы исходный файл оставался на своем месте.

Затмение
источник