就像在this question中讨论过的那样,当我在本地开发环境中时,我遇到了ftp_fget
从FTP下载文件的问题:
警告:ftp_fget():打开BINARY模式数据连接 myFile.csv
根据建议,使用ftp_pasv($conn_id, TRUE);
工作得非常好,但我不想在生产服务器上使用FTP被动模式。
如何检查何时必须使用ftp_pasv
?
我试过了:
<?php
$conn_id = ftp_connect(FTP_SERVER, FTP_PORT, 30);
$handle = fopen(dirname(__FILE__).'/data/temp.csv', 'w');
if (ftp_fget($conn_id, $handle, FTP_FILENAME, FTP_BINARY, 1)) {
copy($handle,dirname(__FILE__).'/data/myFile.csv');
}
else {
// Try with passive mode
ftp_pasv($conn_id, TRUE);
if (ftp_fget($conn_id, $handle, FTP_FILENAME, FTP_BINARY, 1)) {
copy($handle,dirname(__FILE__).'/data/myFile.csv');
}
else {
echo "Error downloading the file";
}
}
ftp_close($conn_id);
但它给了我:
警告:ftp_fget():数据连接意外关闭,文件 转移/myFile.csv由客户端中止。
答案 0 :(得分:0)
你无法检查。它基本上是您需要预先了解的会话信息(以及主机名,用户名和密码)的一部分。
虽然显然只有两种模式,但如果第一种模式失败,你可以尝试一种模式,然后回退到另一种模式。
我首先尝试被动(因为它往往更频繁地工作)并且回退到活动状态。