2009-04-04 4 views
15

私は、他のもののほかに、FTPサーバーに接続してファイルをダウンロードまたはアップロードする必要のあるWebアプリケーションを構築中です。アプリケーションはPHPで書かれており、Linuxサーバー上でホストされています。SFTP from PHP

私が疑問に思っていたのは、SFTPサーバーのサポートも可能かどうかということですが、Googleでのクイック検索の後、これはすべて簡単ではないようです。

PHPでSFTPを使用するにはどうすればよいでしょうか?同じ機能が両方に使用されるように、FTPとSFTPのサポートも提供できるクラスはありますか?

答えて

14

はい、これはcURLで行うことができます。 FTPからSFTPに切り替えるには、プロトコルオプションフォームCURLPROTO_FTPCURLPROTO_SFTPに変更するだけです。

cURLは、HTTP、HTTPS、FTP、FTPS、SCP、SFTP、TELNET、LDAP、LDAPS、DICT、FILE、TFTPのプロトコルをサポートしています。

BTW。 SFTPはFTPSと混同しないでください。 SFTPはSSHファイル転送プロトコルですが、FTPSはSSL上のFTPです。あなたはカールがインストールされていない場合は

+0

実はあなたもCURLOPT_PROTOCOLS' 'を台無しにする必要はありません。 'CURLOPT_URL'で渡すホスト名の前に' sftp:// 'を置くだけで、cURLは自動的にSFTPを検出して使用します。 – sakatc

4

このページの場合、誰かに終了アップで。

PHPでPHP Bindings for LIBSSH2を使用することもできます。システムに適切にインストールする必要があります。すべての依存関係

apt-get install libssh2-php 
3

のUbuntu 10.04とDebian Lennyので

、当然のイゴールの勧告の問題は、それは、とりわけ、はるかに少ない移植可能なコードになり(libssh2のが非常にインストールされていないということです多くのホスト)には、はるかに直感的なOOPベースのAPIがあり、RSA認証は実際には意味があります(libssh2では、公開鍵と秘密鍵を別々にファイルシステムに格納する必要があります。ほとんどの秘密鍵形式には、の公開鍵が含まれています)。

phpseclibは速くもある:

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