php - 某些服务器上的 FTP SSL 连接出现 ftp_put "Failed to establish connection"错误

标签 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 Warning: ftp_put(): Failed to establish connection.

最佳答案

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

ftp_pasv($connessione, true);

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

关于php - 某些服务器上的 FTP SSL 连接出现 ftp_put "Failed to establish connection"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48072600/

相关文章:

.htaccess - htaccess 中的重定向组合

java - Apache-commons-net 库 (Java) 的受控日志记录

delphi - IdFtp.List 偶尔会抛出套接字错误 #10054

php - Mysql,如何查询以基于字符串作为输入从数据库获取名称?

javascript - JSON 输入意外结束

php - 我可以在 PHP 中创建没有 session 的购物车吗?

PowerShell - 为什么某些请求类型不起作用?

php - 如何强制使用 HTTPS(Cloudflare 灵活 SSL)?

python - 如何使用 ftplib 在远程服务器上创建 .txt 文件并使用变量在其中放置一些字符串?

php - 比 if 语句更有效?