Php 将文件从一个文件夹复制到另一个文件夹

Php 将文件从一个文件夹复制到另一个文件夹,php,file,file-handling,Php,File,File Handling,我想将所有文件从一个文件夹移动到另一个文件夹。我的代码如下。在这里,我制作了一个文件夹,我想在其中复制templats文件夹中的所有文件 $doit = str_replace(" ", "", $slt['user_compeny_name']); mkdir("$doit"); $source = "templat/"; $target = $doit . "/"; $dir = opendir($source); while (($file = readdir($dir)) !== fal

我想将所有文件从一个文件夹移动到另一个文件夹。我的代码如下。在这里,我制作了一个文件夹,我想在其中复制templats文件夹中的所有文件

$doit = str_replace(" ", "", $slt['user_compeny_name']);
mkdir("$doit");
$source = "templat/";
$target = $doit . "/";
$dir = opendir($source);
while (($file = readdir($dir)) !== false) {
    copy($source . $file, $target . $file);
}
它工作得很好。复制所有文件,但警告copy()函数的第一个参数不能是目录

任何人能尽快帮我吗?Readdir将读取目录中的所有子目录,包括其他目录和类似的“虚拟”目录。和。。(分别链接到root和parent dir。)您必须检查它们,并防止对这些实例使用
copy()
函数

if ($file != "." && $file != "..") {
// copy
}
while (($file = readdir($dir)) !== false)
{
    if(!is_dir($file))
    {
        copy($source.$file, $target.$file);
    }
}

您没有考虑目录顶部的
文件。这意味着它尝试复制的第一件事是“\template”。这与尝试复制目录相同

只需添加如下内容:

if ($file !== "." && $file !== "..")
...
opendir()
将包括项目
根据


您需要使用其他注释中的代码来排除这些问题。

我知道,这个问题很老了,但也有答案。我觉得有必要展示一些新方法,它们可以用来执行请求的任务

同时,引入的对象具有更多的特性和可能性。不用说,其他答案也同样有效

但现在我们开始使用:

请记住,在此脚本中,所有路径都是相对于脚本本身的工作目录的


我认为这是自我解释,但我们会看一看。这几行将遍历源文件夹的整个内容,检查它是否是文件,并将其复制到目标文件夹,保留原始文件名。

最佳答案!非常感谢@stixxx
$szSrcFolder = 'source_folder';
$szTgtFolder = 'target_folder';

foreach (new DirectoryIterator($szSrcFolder) as $oInfo)
    if ($oInfo->isFile())
        copy($oInfo->getPathname(), $szTgtFolder . DIRECTORY_SEPARATOR . $oInfo->getBasename());