2011-10-14 41 views
0

我正在使用Codeigniter创建一个网站,我试图创建一个函数来通过FTP上传整个目录到远程主机,但没有任何工作通过PHP将整个目录通过PHP上传到远程主机通过FTP

我试过2个功能,我发现,但上传也没有工作,只有少数的文件,以及一些文件的大小为0字节

函数中使用:

// 1St Function 

public function ftp_copy($src_dir, $dst_dir) { 
     $d = dir($src_dir); 

     while($file = $d->read()) { 

      if ($file != "." && $file != "..") { 

       if (is_dir($src_dir."/".$file)) { 

        if ([email protected]_chdir($this->conn_id, $dst_dir."/".$file)) { 

         ftp_mkdir($this->conn_id, $dst_dir."/".$file); 
        } 

        ftp_copy($src_dir."/".$file, $dst_dir."/".$file); 
       } 
       else { 

        $upload = ftp_put($this->conn_id, $dst_dir."/".$file, $src_dir."/".$file, FTP_BINARY); 
       } 
      } 
     } 

     $d->close(); 
    } 


// 2nd Solution from Stackoverflow question 
    foreach (glob("/directory/to/upload/*.*") as $filename) 
     ftp_put($ftp_stream, basename($filename) , $filename, FTP_BINARY); 

任何解决方案?

+1

什么是你正在使用的功能? – Ben

+0

我添加了函数,thx – Hamza

回答

4

如果您使用的是codeigniter,您可以使用FTP库中的$ this-> ftp-> mirror()。

http://codeigniter.com/user_guide/libraries/ftp.html

$this->load->library('ftp'); 

$config['hostname'] = 'ftp.example.com'; 
$config['username'] = 'your-username'; 
$config['password'] = 'your-password'; 
$config['debug'] = TRUE; 

$this->ftp->connect($config); 

$this->ftp->mirror('/path/to/myfolder/', '/public_html/myfolder/'); 

$this->ftp->close(); 
+0

我正在使用镜像函数,但我传递的是没有结尾斜杠的源目录,现在我添加了尾部斜杠并且它正在工作。 谢谢 – Hamza

+0

框架的实用性再次发挥作用。 – Xeoncross