我有一个 PHP 脚本,它连接到外部 FTP 服务器,并将 4 个 txt 文件传输到本地服务器。一个文件比其他文件大,但通常最多只有几百 KB。当它运行时,有时会失败,有时会传输部分文件,有时会传输一个文件而不传输其他文件。它永远无法成功传输所有内容。
已检查权限并手动测试 FTP 帐户,表明其正常,连接和传输顺利、快速。我尝试过切换到 ASCII 但没有成功。
我使用此脚本连接的帐户不是 SFTP,但我要传输到的本地服务器仅是 SFTP (1&1)。我不确定这是否相关,并且无法解释间歇性的性质。谢谢。
<?php
ini_set('display_errors', 1);
$ftp_server = "*";
$ftp_user_name = "*";
$ftp_user_pass = "*";
// define some variables
$local_file[0] = 'updates/vebraproperties.txt';
$local_file[1] = 'updates/files.txt';
$local_file[2] = 'updates/rooms.txt';
$local_file[3] = 'updates/vebraclients.txt';
$server_file[0] = 'vebraproperties.txt';
$server_file[1] = 'files.txt';
$server_file[2] = 'rooms.txt';
$server_file[3] = 'vebraclients.txt';
// set up basic connection
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
echo $login_result . '<br/>';
for($i = 0; $i <= 3; $i++) {
// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file[$i], $server_file[$i], FTP_BINARY)) {
echo "Successfully written to " . $local_file[$i] . "\n<br/>";
} else {
echo "There was a problem \n";
}
}
// close the connection
ftp_close($conn_id);
?>
最佳答案
您可以尝试使用 passive mode .
您可以在登录后进行设置:
...
// Login
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// Set passive mode
ftp_pasv($conn_id, true);
...
关于php - ftp_connect PHP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42438168/