从PHP内部的SFTP

我正在构build一个Web应用程序,除了其他的事情外,还需要连接到FTP服务器来下载或上传文件。 该应用程序是用PHP编写的,它托pipe在Linux服务器上。

我想知道的是,是否可以提供对SFTP服务器的支持,但是在Google上快速search之后,似乎并非如此简单。

所以,问题是:从PHP内部使用SFTP的最佳方式是什么? 有没有一个类也可以提供FTP和SFTP的支持,以便可以使用相同的function?

提前感谢您的时间,titel

是的,你可以用cURL来做到这一点。 要从FTP切换到SFTP,您只需要将协议选项CURLPROTO_FTP更改为CURLPROTO_SFTP

cURL支持以下协议:HTTP,HTTPS,FTP,FTPS,SCP,SFTP,TELNET,LDAP,LDAPS,DICT,FILE,TFTP。

BTW。 SFTP不要与FTPS混淆。 SFTP是SSH文件传输协议,而FTPS是通过SSL的FTP。

如果你没有安装cURL(我的主机没有),你可以使用phpseclib:

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

如果有人在这个页面上结束。

您也可以使用PHP绑定LIBSSH2与PHP。 它应该适当地安装在系统上。

在Ubuntu 10.04和Debian Lenny当然有所有的依赖

 apt-get install libssh2-php 

Igorbuild议的问题是,除了别的以外,它使便携代码less得多(libssh2没有安装在很多主机上),它有一个更加直观的基于OOP的API,RSAauthentication实际上是有意义的(libssh2要求您将公钥和私钥分开存储在文件系统上;由于大多数私钥格式都包含公钥,所以它们必须单独提供的事实是愚蠢的。

phpseclib也更快:

http://kevin.vanzonneveld.net/techblog/article/make_ssh_connections_with_php/#comment_3759