2021/05/21
PHPでPECLを使わずSSH2を使う phpseclib
PHPでSFTPやSSHを利用しようと思った場合に、PECLにて拡張をしないと基本は使えません。
それをPECLにて拡張せずに、ライブラリを入れるだけで使用できる「phpseclib」をご紹介します!
phpseclibはバージョンが幾つか存在し、今のところ(2021年5月)で1〜3までのバージョンが存在しています。
バージョン3ではPHP5.6.1までサポートをしている様ですね。
バージョン2ではPHP5.3.3までサポートという感じです。
最近はPHP7を使う方が非常に多いと思うので、特に気にせずにバージョン3を使いましょう。
※現在どんなバージョンが出ているか知りたい方は下のリンクからご確認ください。
https://github.com/phpseclib/phpseclib
使用方法はビックリするぐらい簡単です。
※SFTPでディレクトリ・ファイルの一覧を確認する例です。
まずは、composerでインストールをしましょう。
composer require phpseclib/phpseclib:~3.0
次にSFTPを使用したいファイルにautoload.phpを読み込み、SFTPの処理を記述すれば終わりです!
require "vendor/autoload.php";
use phpseclib3\Net\SFTP;
$sftp = new SFTP('example.com', 22); // 第一引数がHOST、第二引数がポート番号
$sftp->login('user', 'password');
$filelist = $sftp->nlist('/var/www/html'); // 確認したいディレクトリを指定 指定しない場合は「./」
これを実行した「$filelist」の結果は下の様になりました。
今回テストした場所はWordpressを入れていたのですが、ちゃんと表示がされていますね。
array(24) {
[0]=>
string(1) "."
[1]=>
string(2) ".."
[2]=>
string(10) "wp-content"
[3]=>
string(17) "wp-links-opml.php"
[4]=>
string(11) "wp-load.php"
[5]=>
string(18) "wp-blog-header.php"
[6]=>
string(11) "license.txt"
[7]=>
string(9) "index.php"
[8]=>
string(11) "wp-mail.php"
[9]=>
string(13) "wp-signup.php"
[10]=>
string(15) "wp-activate.php"
[11]=>
string(11) "wp-cron.php"
[12]=>
string(16) "wp-trackback.php"
[13]=>
string(10) "xmlrpc.php"
[14]=>
string(20) "wp-comments-post.php"
[15]=>
string(20) "wp-config-sample.php"
[16]=>
string(15) "wp-settings.php"
[17]=>
string(12) "wp-login.php"
[18]=>
string(11) "readme.html"
[19]=>
string(13) "wp-config.php"
[20]=>
string(8) "wp-admin"
[21]=>
string(11) "wp-includes"
[22]=>
string(9) ".htaccess"
}
以上になります!
SFTPの他の関数やSSH2を使用したい場合は下のドキュメントをご確認ください。