株式会社NextCodeのロゴ株式会社NextCode

BLOG

ブログ

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を使用したい場合は下のドキュメントをご確認ください。

https://phpseclib.com/

TOPへ移動
PAGE
TOP
%d人のブロガーが「いいね」をつけました。