<?
$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('@\s+@', 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文件夹。如果我可以拉链它将是完美的。我试着写一些东西,但它只是不复制那些文件。我错过了什么?
答案 0 :(得分:3)
这是我在慢速FTP服务器上使用的代码:它创建一个zip文件,然后我花了5分钟将它复制到我的本地计算机(取决于互联网速度连接和压缩文件大小)
<?php
$archive = "2012.zip";
$directory = $_SERVER['DOCUMENT_ROOT'];
exec( "zip -r $archive $directory");
?>
希望这有帮助
答案 1 :(得分:2)
如果您使用的是Linux并且不受php的safe_mode限制(使用phpinfo()查找),那么您可以简单地使用exec()从shell运行zip命令,如:
<?
exec("zip -R public_html.zip /home/username/public_html",$output);
?>
希望这有帮助。
编辑:只是为了澄清一下,如果您有FTP访问权限,那么您可以将此语句作为独立脚本上传并通过浏览器进行调用。