2012-02-16 58 views
1
<? 

$ftp_server = "name.info"; 
$ftp_user = "user"; 
$ftp_pass = "pass"; 

// set up a connection or die 
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 

// try to login 
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) 
{ 
    ftp_chdir($conn_id, 'public_html/'); 
    $contents = ftp_nlist($conn_id, '-la .'); 
    print_r($contents); 
    foreach($contents as $line){ 
     $file = preg_split('@\[email protected]', trim($line)); 
     $name = $file[8]; 
     $size = $file[4]; 
     $mode = $file[0]; 
     if(substr($mode, 0, 1) == '-'){ 
     //file 
     $fd = fopen('d/'.$name, 'w'); 
     ftp_fget ($conn_id, $fd, $name, FTP_BINARY); 
     fclose($fd); 
     }else{ 
     //dir 
     } 
    } 
} 
else 
    die ("Couldn't connect as $ftp_user\n"); 

?> 

我想获取所有public_html文件夹。如果我能压缩它,那将是完美的。我试图写一些东西,但它不会复制这些文件。我错过了什么?来自FTP的Zip文件夹

+2

什么是行不通的? – thetaiko 2012-02-16 18:31:41

+0

@thetaiko:它不会将文件复制到我的目录。 – 2012-02-16 18:32:32

+2

@hey ...对。什么,具体而言,不起作用。连接?登录? fget?这里有很多函数在成功或失败时返回布尔值。 – thetaiko 2012-02-16 18:45:39

回答

2

如果你是在Linux上,而不是由PHP的safe_mode设置(使用phpinfo()函数来查找出来)的限制,那么你可以简单地使用EXEC()从像贝壳运行zip命令:

<? 
exec("zip -R public_html.zip /home/username/public_html",$output); 
?> 

希望这有助于。

编辑:只是为了澄清,如果你有FTP访问,那么你可以上传这个语句作为一个独立的脚本,并通过浏览器调用它。

3

这是我对慢FTP服务器使用的代码:它创建一个zip文件,然后带我5分钟,将它复制到我的本地计算机(取决于互联网连接速度和压缩文件大小)

<?php 

$archive = "2012.zip"; 
$directory = $_SERVER['DOCUMENT_ROOT']; 
exec("zip -r $archive $directory"); 

?> 

希望这会有帮助

+1

+1目录名称中的变异性 – Praesagus 2013-04-05 18:02:00

+0

好一谢谢 – 2015-02-05 09:07:17