【问题标题】:Warning: ftp_put(): Connecting to port警告:ftp_put():连接到端口
【发布时间】:2015-08-25 13:21:31
【问题描述】:

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

代码执行了 3 次。我收到了三个不同的警告。

警告:ftp_put():在第 10 行连接到文件名中的端口 1926(我将其命名)
警告:ftp_put():在第 10 行连接到文件名中的端口 1928(我将其命名)
警告:ftp_put():在第 10 行连接到文件名中的端口 1930(我命名它)

  1. 警告信息是什么意思?
  2. 为什么要连接到不同的端口?也许端口每次都应该是 21,为什么不呢?

【问题讨论】:

    标签: php ftp


    【解决方案1】:

    "Connecting to port xxx" 是 PureFTPD 服务器在尝试连接回 FTP 客户端到其主动模式数据连接端口时发出的消息(这是随机的,这就是为什么变化)。

    如果确实需要使用主动模式,则需要允许传入连接到PHP使用的主动模式数据连接端口范围。
    见我的guide for network configuration necessary for the active mode FTP

    不过,如果您不需要使用主动模式,请改用被动模式。被动模式通常不需要在客户端进行任何网络配置。

    在 PHP 中,您可以通过在 ftp_login 之后调用 ftp_pasv function 来切换到被动模式:

    ...
    ftp_login($conn_id, $usr, $pwd) or die("Cannot login");
    ftp_pasv($conn_id, true) or die("Cannot switch to passive mode");
    ...
    

    请参阅上述指南以了解主动和被动 FTP 模式之间的区别。

    【讨论】:

      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 2011-01-21
      • 2011-06-03
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      相关资源
      最近更新 更多