SFTP изнутри PHP

Я занимаюсь созданием веб-приложения, которому, помимо прочего, потребуется подключение к FTP-серверу для загрузки или выгрузки файлов. Приложение написано на PHP и размещено на сервере Linux.

Мне было интересно, можно ли также обеспечить поддержку серверов SFTP, но после некоторых быстрых поисков в Google кажется, что это не все так просто.

Итак, возникает вопрос: как лучше всего использовать SFTP из PHP? Есть ли класс, который также может обеспечивать поддержку FTP, а также SFTP, чтобы одни и те же функции могли использоваться для обоих?


person titel    schedule 04.04.2009    source источник


Ответы (4)


Да, вы можете сделать это с помощью cURL. Чтобы переключиться с FTP на SFTP, все, что вам нужно сделать, это изменить форму параметра протокола с CURLPROTO_FTP на CURLPROTO_SFTP.

cURL поддерживает следующие протоколы: HTTP, HTTPS, FTP, FTPS, SCP, SFTP, TELNET, LDAP, LDAPS, DICT, FILE, TFTP.

КСТАТИ. SFTP не следует путать с FTPS. SFTP - это протокол передачи файлов SSH, а FTPS - это FTP через SSL.

person vartec    schedule 04.04.2009
comment
На самом деле вам даже не нужно возиться с CURLOPT_PROTOCOLS. Вы можете просто поставить sftp:// перед именем хоста, которое вы передаете с помощью CURLOPT_URL, и cURL автоматически обнаружит и использует SFTP. - person sakatc; 10.08.2012

если у вас не установлен cURL (мой хост не установлен), вы можете использовать phpseclib:

http://phpseclib.sourceforge.net/documentation/net.html#net_sftp

person dreamafter    schedule 01.07.2009

На случай, если кто-то окажется на этой странице.

Вы также можете использовать привязки PHP для LIBSSH2 с PHP. Он должен быть соответствующим образом установлен в системе.

В Ubuntu 10.04 и Debian Lenny конечно со всеми зависимостями

apt-get install libssh2-php
person Igor    schedule 04.01.2011

Проблема с рекомендацией Игоря заключается в том, что она, среди прочего, делает гораздо менее переносимый код (libssh2 не установлен на очень многих хостах), он имеет гораздо более интуитивно понятный API на основе ООП, а проверка подлинности RSA действительно имеет смысл (для libssh2 требуется вы храните открытый ключ и закрытый ключ отдельно в файловой системе; тот факт, что они должны быть предоставлены отдельно, глупо, поскольку большинство форматов закрытых ключей включают открытый ключ в них).

phpseclib также быстрее:

http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_with / а>

person Community    schedule 09.01.2011