从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