我无法将文件上传到我的ftp服务器。
总是有警告:
ftp_put():连接到端口。
<?php
set_time_limit(0);
$host = 'xxxx';
$usr = 'yyyy';
$pwd = 'zzzz';
$local_file = '/home/back.sql';
$ftp_path = '/public_html/';
$conn_id = ftp_connect($host, 21) or die ("Cannot connect to host");
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
$upload = ftp_put($conn_id, $ftp_path.'back1.sql', $local_file, FTP_ASCII);
print($upload);
?>
代码执行了三次。我有三个不同的警告。
警告:ftp_put():在第10行连接到文件名(我命名为)的端口1926 警告:ftp_put():在第10行连接到文件名(我命名为)的端口1928 警告:ftp_put():在第10行连接到文件名(我命名为)的端口1930
“连接到端口xxx”是PureFTPD服务器发出的消息,当它尝试连接回FTP客户端到其活动模式数据连接端口时(这是随机的,这就是它改变的原因)。
如果确实需要使用活动模式,则需要允许传入连接到PHP使用的活动模式数据连接端口范围。 看看我的guide for network configuration necessary for the active mode FTP。
但是,如果您不需要使用活动模式,请改用被动模式。被动模式通常不需要客户端上的任何网络配置。
在PHP中,通过在ftp_pasv
function之后调用ftp_login
切换到被动模式:
...
ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
ftp_pasv($conn_id, true) or die("Cannot switch to passive mode");
...
请参阅上面的指南,了解主动和被动FTP模式之间的区别。