我已经创建了一个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():无法建立连接。
答案 0 :(得分:1)
您明确使用FTP 活动模式。我甚至对在大多数服务器上为您工作感到惊讶。请勿使用活动模式,使用被动模式。
ftp_pasv($connessione, true);
要使活动模式起作用,您的网络服务器必须配置防火墙和NAT以允许传入的FTP数据连接。有关详细信息,请参阅active and passive FTP connection modes上的我的文章。