如何提取另一台服务器上的Zip文件?能否通过FTP凭据实现?
可以通过FTP凭据提取远程服务器上的Zip文件吗?
当然可以!你完全可以借助FTP凭据来获取另一台服务器上的Zip文件,不过你提供的代码是把本地文件上传到FTP服务器的逻辑(用了ftp_put()),如果你的需求是将远程服务器上的Zip文件下载到本地,得改用ftp_get()函数来实现。
修正后的PHP代码示例
下面是针对“下载远程Zip文件到本地”场景的完整代码,我还加了必要的错误处理和被动模式配置(很多服务器需要这个才能正常传输):
// 本地要保存Zip文件的路径(比如当前目录下的local_abc.zip) $dest = './local_abc.zip'; // 远程FTP服务器上Zip文件的完整路径(如果文件在FTP根目录就直接写文件名,否则要写全路径) $source = 'abc.zip'; // 连接FTP服务器 $ftpConn = ftp_connect("ftp.example.com") or die("无法连接到目标FTP服务器,请检查地址是否正确"); // 使用凭据登录FTP ftp_login($ftpConn, "username", "password") or die("FTP登录失败,请检查账号密码"); // 开启被动模式(绝大多数情况下需要这个,避免防火墙拦截) ftp_pasv($ftpConn, true); // 执行下载:从远程服务器获取文件到本地,用FTP_BINARY模式处理二进制文件(Zip属于二进制) if (ftp_get($ftpConn, $dest, $source, FTP_BINARY)) { echo "远程Zip文件已成功下载到本地!"; } else { echo "下载失败,请检查远程文件路径、本地写入权限或FTP权限"; } // 关闭FTP连接 ftp_close($ftpConn);
几个关键注意事项
- 权限检查:确保你拥有远程FTP服务器上目标Zip文件的读取权限,同时本地保存路径要有写入权限
- 路径准确性:如果远程Zip文件不在FTP根目录,一定要填写完整的远程路径(比如
/files/abc.zip) - 被动模式:几乎所有的云服务器、防火墙环境都要求开启被动模式,不然FTP传输会被拦截
- 二进制模式:处理Zip、图片这类二进制文件时,必须用
FTP_BINARY模式,不能用文本模式(FTP_ASCII),否则文件会损坏
内容的提问来源于stack exchange,提问作者Dattaraj Mahajan
相关产品推荐
相关产品推荐

