我已经成功地从客户端下载了一段远程文件一段时间了,由于某种原因,他们的服务器现在正在返回私有IP.FileZilla非常聪明,可以使用服务器地址.
Status: Server sent passive reply with unroutable address. Using server address instead.
Run Code Online (Sandbox Code Playgroud)
我没有看到使用php的内置ftp代码执行此操作的方法.
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, TRUE);
if (ftp_get($conn_id, $downloaded_file, $server_file, FTP_BINARY)) {
printf("Successfully downloaded %s\n", $downloaded_file);
} else {
printf("There was a problem downloading %s\n %s\n",
$server_file,
print_r(error_get_last(), TRUE)
);
exit(1);
}
ftp_close($conn_id);
Run Code Online (Sandbox Code Playgroud)
有没有办法让PHP忽略数据通道建议的IP并使用服务器的IP?
从5.6.18/7.0.2开始,可以使用以下选项:
ftp_set_option($conn_id, FTP_USEPASVADDRESS, false);
Run Code Online (Sandbox Code Playgroud)