ftp_put & quot; Не удалось установить соединение & quot; ошибка с FTP-соединением SSL на каком-либо сервере

Я создал PHP-скрипт для резервного копирования веб-проектов. Он состоит из создания архива .tar.gz и отправки его на персональный FTP-сервер (с помощью vsftpd).

На многих веб-серверах он работает нормально, но на одном конкретном веб-сервере скрипт работает неправильно.

Вот часть 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 (): не удалось установить соединение.

2

Решение

Вы явно используете FTP активный Режим. Я даже удивлен, что у вас работает на большинстве серверов. Не используйте активный режим, используйте пассивный Режим.

ftp_pasv($connessione, true);

Для работы в активном режиме ваш веб-сервер должен иметь брандмауэр и NAT, настроенные для разрешения входящих подключений к данным FTP. Подробнее см. мой статья о активные и пассивные режимы FTP-соединения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]