我很困惑的是一个地产代理vebra导入脚本,它在移动到另一台服务器之前工作正常,但现在这似乎根本不起作用.
有谁知道为什么我会得到以下警告......
警告:ftp_get()[function.ftp-get]:打开文件传输的数据通道.在第37行的/home/username/public_html/includes/cron/import/vebra-import.php中
警告:ftp_get()[function.ftp-get]:在第37行的/home/username/public_html/includes/cron/import/vebra-import.php中转移确定
这是ftp连接代码:
$ftp = ftp_connect($ftp_host, 21) or die("FTP Connection Error");
ftp_login($ftp, $ftp_user, $ftp_pass) or die("Can't Connect to FTP");
$ftpdir = ftp_nlist($ftp, "/");
if(!empty($ftpdir) && count($ftpdir) > 0) {
foreach($ftpdir as $ftpfile) {
if(preg_match("/\.txt$/", $ftpfile)) {
$getfile = ftp_get($ftp, $csv_dir.$ftpfile, $ftpfile, FTP_BINARY);
if($getfile){
$downloaded++;
}
$total++;
}
}
}
ftp_close($ftp);
Run Code Online (Sandbox Code Playgroud)
此外,它似乎是间歇性的,有时这会成功执行,有时它会因上述错误而失败.
Mar*_*vac 12
您的服务器未处于被动模式,并添加此代码以进行处理:
ftp_pasv($ftp, true);
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅php.net上的被动模式:http://php.net/manual/en/function.ftp-pasv.php 被动模式使用客户端而不是服务器发起的数据.所以这就是你不能穿上服务器的原因.如果未设置,则会失败.
注意:ftp_pasv()功能后设置ftp_login()功能.