【PHP】PHPでSFTP接続

2018年12月5日水曜日

php sftp

t f B! P L

PHPでSFTP接続


PHPでSFTP接続する際ssh2_sftpを使うのが良さそうだったので、
ssh2_sftpを使って実装してみました。



事前準備

SSH2関数がインストールされていない場合、
pcelコマンドでSSH2をインストールするとよいです。
pecl install ssh2return

SSH2関数が入っていない場合、
ssh2_connect関数を実行すると下記のようなエラーが出ます。

PHP Fatal error: Call to undefined function ssh2_connect()

実装



$server = "xxx.xxx.xxx.xxx";
$port = "22";
$username = "user";
$password = "password";

// コネクション生成
$connect = ssh2_connect($server, $port);
// パスワード認証
if (ssh2_auth_password($connect, $username, $password)) {
  $sftp = ssh2_sftp($connect);

  // 出力先を指定
  $stream = fopen("ssh2.sftp://{$sftp}/home/hoge/hoge.txt.tmp", 'w');
  $file = file_get_contents("/tmp/hoge.txt");
  fwrite($stream, $file);
  fclose($stream);

  // .tmpを外す
  ssh2_sftp_rename($sftp,"/foo/bar/hoge.txt.tmp", "/home/hoge/hoge.txt");

  ssh2_exec($connect,"exit");
}

だいたいこんな実装になります。
ちなみにパスワード認証ではなく、秘密鍵を使う場合は
ssh2_auth_pubkey_file を使用します。
※認証するには公開鍵・秘密鍵が必要です。


$server = "xxx.xxx.xxx.xxx";

if (ssh2_auth_pubkey_file ($connect, $username, 公開鍵のパス, 秘密鍵のパス)) {
  $sftp = ssh2_sftp($connect);

Translate

このブログを検索

フォロワー

QooQ