Подтвердить что ты не робот

Как SFTP с PHP?

Я столкнулся со многими PHP-скриптами для веб-FTP-клиентов. Мне нужно реализовать SFTP-клиент в качестве веб-приложения в PHP. Поддерживает ли PHP fot SFTP? Я не мог найти образцы. Может ли кто-нибудь помочь мне с этим?

4b9b3361

Ответ 1

PHP имеет обтекатели потоков ssh2 (по умолчанию отключен), поэтому вы можете использовать соединения sftp с любой функцией, поддерживающей ssh2.sftp:// потоков, используя ssh2.sftp:// для протокола, например

file_get_contents('ssh2.sftp://user:[email protected]:22/path/to/filename');

или - когда также используется расширение ssh2

$connection = ssh2_connect('shell.example.com', 22);
ssh2_auth_password($connection, 'username', 'password');
$sftp = ssh2_sftp($connection);
$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');

См. Http://php.net/manual/en/wrappers.ssh2.php

С другой стороны, есть еще довольно много вопросов по этой теме:

Ответ 2

Функции ssh2 не очень хороши. Трудно использовать и еще труднее установить, использование их гарантирует, что ваш код имеет нулевую мобильность. Моя рекомендация заключалась бы в использовании phpseclib, чистой реализации PHP SFTP.

Ответ 3

Я обнаружил, что "phpseclib" должен помочь вам в этом (SFTP и многие другие функции). http://phpseclib.sourceforge.net/

Чтобы поместить файл на сервер, просто позвоните (пример кода из http://phpseclib.sourceforge.net/sftp/examples.html#put)

<?php
include('Net/SFTP.php');

$sftp = new Net_SFTP('www.domain.tld');
if (!$sftp->login('username', 'password')) {
    exit('Login Failed');
}

// puts a three-byte file named filename.remote on the SFTP server
$sftp->put('filename.remote', 'xxx');
// puts an x-byte file named filename.remote on the SFTP server,
// where x is the size of filename.local
$sftp->put('filename.remote', 'filename.local', NET_SFTP_LOCAL_FILE);

Ответ 4

Я выполнил полное копирование и написал класс, который создает пакетный файл, а затем вызывает sftp через вызов system. Не самый приятный (или самый быстрый) способ сделать это, но он работает для того, что мне нужно, и не требовал установки дополнительных библиотек или расширений в PHP.

Может быть, это можно сделать, если вы не хотите использовать расширения ssh2

Ответ 5

Если вы можете использовать расширение ssh2 для PHP, я предлагаю проверить это:

idct SFTP-клиент на GitHub

Ответ 6

Monsta FTP предлагает SFTP/SCP, а также обычный FTP через веб-клиент, который можно скачать бесплатно. (отказ от ответственности: я участвую в этом проекте)