我正在尝试使用 PHP 从 FTP 下载文件。我在 2 台服务器上测试了该脚本,它运行良好。但它在我需要运行此脚本的服务器上不起作用。任何帮助都将不胜感激。
我收到了这个错误。
警告:ftp_nb_fget():类型设置为 I。位于 /home/sites/example.com/public_html/path-to-file/download-file.php 第 18 行
<?php
ini_set("display_errors", "1");
error_reporting(E_ALL);
$ftp_server = "server_address";
$ftp_username = "username";
$ftp_userpass = "password";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);
$src_file = 'source_file'; //File to write
$dest_file = 'server_file'; //File to download
$data_file = fopen($src_file, 'w');
// Initate the download
$ret = ftp_nb_fget($ftp_conn, $data_file, $dest_file, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Do whatever you want
echo ".";
// Continue downloading...
$ret = ftp_nb_continue($ftp_conn);
}
if ($ret != FTP_FINISHED) {
echo "There was an error downloading the file...";
exit(1);
}
?>
我也尝试过使用 ftp_get 而不是 ftp_nb_fget,但出现与上述相同的错误。
答案1
基本上可能发生的情况是 - 您位于防火墙后面,但尝试使用活动 ftp 会话(您确实在这样做)。
这可以解释为什么您的 ftp 会话已正确建立,但尝试获取文件失败。
看看这里如何使用被动 ftp