ftp_put“无法建立连接”错误与某些服务器上的FTP SSL连接

时间:2018-01-03 06:54:35

标签: php ssl ftp vsftpd

我已经创建了一个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():无法建立连接。

1 个答案:

答案 0 :(得分:1)

您明确使用FTP 活动模式。我甚至对在大多数服务器上为您工作感到惊讶。请勿使用活动模式,使用被动模式。

ftp_pasv($connessione, true);

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