Как загрузить файл по sftp в php?

Загрузка файла по SFTP (Secure File Transfer Protocol) в PHP может быть реализована с использованием расширения SSH2 для PHP. Ниже приведен подробный пример кода, который показывает, как загрузить файл по SFTP в PHP:

<?php
// Установка параметров подключения к SFTP-серверу
$server = 'your_sftp_server.com';
$port = 22;
$username = 'your_username';
$password = 'your_password';

// Путь к локальному файлу, который нужно загрузить
$localPath = '/path/to/local/file.txt';

// Путь к удаленной папке, куда нужно загрузить файл
$remotePath = '/path/to/remote/directory/';

// Создание SFTP-соединения
$connection = ssh2_connect($server, $port);

// Аутентификация на SFTP-сервере
if (ssh2_auth_password($connection, $username, $password)) {
    // Открытие SFTP-сессии
    $sftp = ssh2_sftp($connection);

    // Открытие локального файла для чтения
    $localFile = fopen($localPath, 'r');

    // Создание удаленного файла на SFTP-сервере
    $remoteFile = fopen("ssh2.sftp://{$sftp}{$remotePath}" . basename($localPath), 'w');

    // Передача данных из локального файла в удаленный файл
    while ($data = fread($localFile, 1024)) {
        fwrite($remoteFile, $data);
    }

    // Закрытие файлов
    fclose($localFile);
    fclose($remoteFile);

    echo 'Файл успешно загружен по SFTP.';
} else {
    echo 'Не удалось аутентифицироваться на SFTP-сервере.';
}

// Закрытие SFTP-соединения
ssh2_disconnect($connection);
?>

В данном примере:
- Замените 'your_sftp_server.com', 'your_username' и 'your_password' на актуальные данные для вашего SFTP-сервера.
- Замените '/path/to/local/file.txt' на путь к локальному файлу, который вы хотите загрузить.
- Замените '/path/to/remote/directory/' на путь к удаленной папке, куда вы хотите загрузить файл.

Приведенный код открывает SSH-соединение с указанным SFTP-сервером, аутентифицируется с использованием заданных учетных данных, создает SFTP-сессию, открывает локальный файл для чтения и удаленный файл для записи, и передает данные из локального файла в удаленный файл. Затем он закрывает файлы и SFTP-соединение, и выводит сообщение об успешной загрузке файла, или сообщение об ошибке при аутентификации.

Обратите внимание, что для работы этого примера требуется установленное и включенное расширение SSH2 для PHP. Если у вас его нет, вам может потребоваться установить или включить его перед использованием этого кода.