2012-02-16 53 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