如何使用PHP将文件从一个目录复制到另一个目录?


158

说我test.phpfoo目录中还有一个文件bar。如何替换bar/test.phpfoo/test.php使用PHP?我在Windows XP上,跨平台的解决方案会很棒,但是Windows是首选。

Answers:


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目录?
henrywright

1
没有@henrywright,它本身不会创建目录。您必须手动执行。在php手册上进行检查
Haseeb Zulfiqar

25

您可以使用rename()函数:

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

但是,这将移动文件而不是复制


22
我不知道为什么命名这个函数重命名并注意移动之类的东西
他们

@themis我也希望他们为函数命名move。如果有人对Linux有一点了解,这将是很直观的。
Fr0zenFyr

4
@themis因为rename('foo/test1.php', 'foo/test2.php');;)
Anand Singh


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
?>

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()。

如果我不再要求源文件留在其位置,则倾向于使用重命名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.