【问题标题】:ftp_put "Failed to establish connection" error with FTP SSL connection on some serverftp_put“无法建立连接”错误与某些服务器上的 FTP SSL 连接
【发布时间】:2018-06-12 20:17:48
【问题描述】:

我创建了一个 PHP 脚本来备份 Web 项目。它包括制作一个 .tar.gz 存档,并将其发送到个人 FTP 服务器(使用 vsftpd)。

在许多 Web 服务器上它工作正常,但在一个特定的 Web 服务器上脚本不能正常工作。

这里是FTP连接部分:

$connessione = ftp_ssl_connect($ftpServer, $ftpPort, 300);
if($connessione == false)
{
    echo("connection failed.\n");
    return false;
}
echo("Connection established.\n");
echo("Authenticating for "  .$username . " ...\n");
$resLogin = ftp_login($connessione, $username, $password);
if(!$resLogin)
{
    echo("authentication failed.\n");
    return false;
}
ftp_pasv($connessione, false);

$workingDir = ftp_pwd($connessione);
echo("entering on " . $workingDir . "\n");
echo("Uploading file ... \n");
$fullFilePath = __DIR__ . "/" . $filePath;
$result = ftp_put($connessione, $ftpPath . $file, $fullFilePath, FTP_BINARY);
if($result)
    echo("Upload completed.\n");
else
    echo("Some error occurred.\n");
ftp_close($connessione);

ftp_put调用返回的错误是:

PHP 警告:ftp_put():建立连接失败。

【问题讨论】:

    标签: php ssl ftp vsftpd


    【解决方案1】:

    您正在明确使用 FTP 活动 模式。我什至很惊讶它在大多数服务器上都适用于你。不要使用主动模式,使用被动模式。

    ftp_pasv($connessione, true);
    

    要使主动模式正常工作,您的网络服务器必须配置防火墙和 NAT 以允许传入的 FTP 数据连接。有关详细信息,请参阅active and passive FTP connection modes 上的我的 文章。

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 2019-06-26
      • 2016-02-28
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多