在php中将一个目录复制到另一个目录

时间:2013-05-27 07:28:34

标签: php

       <?php
         extract($_REQUEST);
        if(isset($_POST['submit']))
         {
          $get_folder = $_POST['url'];
       $q = mysql_query("insert into test (url) values ('$url')");
        if($q)
        {
        copydir("test",$get_folder);
      function copydir($source,$destination)
       { 
       if(!is_dir($destination))
       {
       $oldumask = umask(0); 
      mkdir($destination, 01777); 
      umask($oldumask);
       }
      $dir_handle = @opendir($source) or die("Unable to open");
     while ($file = readdir($dir_handle)) 
      {
        if($file!="." && $file!=".." && !is_dir("$source/$file")) //if it is file
      copy("$source/$file","$destination/$file");
      if($file!="." && $file!=".." && is_dir("$source/$file")) //if it is folder
      copydir("$source/$file","$destination/$file");
      }
      closedir($dir_handle);
       }
        }
        }
       ?>

这是我的代码...它在第14行的error: Call to undefined function copydir()中显示致命C:\xampp\htdocs\mywork\creating-folder\1.php但是当我从copydir("test",$get_folder);复制到closedir($dir_handle);的单独文件时,它完美地运行但不是$ get_folder需要提供一些静态名称

3 个答案:

答案 0 :(得分:2)

使用copy()

请注意,此功能确实支持开箱即用的目录。链接文档页面上的一个注释中的函数可能会有所帮助:

<?php 
function recurse_copy($src,$dst) { 
    $dir = opendir($src); 
    @mkdir($dst); 
    while(false !== ( $file = readdir($dir)) ) { 
        if (( $file != '.' ) && ( $file != '..' )) { 
            if ( is_dir($src . '/' . $file) ) { 
                recurse_copy($src . '/' . $file,$dst . '/' . $file); 
            } 
            else { 
                copy($src . '/' . $file,$dst . '/' . $file); 
            } 
        } 
    } 
    closedir($dir); 
} 
?>

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这有效:

foo();

function foo() { ... }

这不会:

if (...) {

    foo();

    function foo() { ... }

}

这将:

if (...) {

    function foo() { ... }


    foo();

}

一般情况下,您需要声明 之前 。例外是普通的,全局定义的函数,如第一个例子中所示;在执行之前的解析步骤中正在处理这些问题。由于您的函数声明位于if语句内并因此是有条件的,因此需要首先评估if条件,从而评估整个代码。在评估代码时,您正在尝试调用尚未声明的函数。