警告:ftp_put():连接到端口

问题描述 投票:1回答:1

我无法将文件上传到我的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

  1. 警告信息是什么意思?
  2. 为什么连接到不同的端口?也许端口每次应该是21,为什么不呢?
php ftp
1个回答
3
投票

“连接到端口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模式之间的区别。

© www.soinside.com 2019 - 2024. All rights reserved.