PHP

PHPでSFTPアップロードを行う

【問題】

PHPでSFTPアップロードを行いたい。(SSHで書き込みを行いたい)

 

【解決法】

// -- 変数の設定 --
$sHost = '000.000.000.000';
$iPort = 22;
$sUser = 'user';
$sPW = 'password';
$sPath = '/path/';
$sFileName = 'filename.txt';

// -- 書き込むファイルの取得 --
$sFile = file_get_contents($sPath . $sFileName); 

// -- SSH(SFTP)での書き込み --
$sConnect = $sUser . ':' . $sPW . '@' . $sHost . ':' . $iPort;
$rcFile = fopen('ssh2.sftp://' . $sConnect . $sPath . $sFileName, 'w');
fwrite($rcFile, $sFile);
fclose($rcFile);

 

【備考】

PHPのSFTPアップロードの方法を探してみたのですが、どうも正常に動作しないサンプルばかりネット上に転がっていたので、ここにサンプルを置いておきます。

 

要は

ssh2.sftp://user:pass@example.com:22/path/to/filename

の形でアクセスすれば普通のファイル書き込みと同様に行えます。

 

詳細は 下記をご覧ください。

http://php.net/manual/ja/wrappers.ssh2.php