
PHPでssh2_connect()などssh2関数を使えるように、PECLのssh2をCentOS5.3の64ビット版にインストール
# wget http://www.libssh2.org/download/libssh2-1.1.tar.gz # mv libssh2-1.1.tar.gz /usr/local/src/libssh2-1.1.tar.gz # cd /usr/local/src/ # tar zxvf libssh2-1.1.tar.gz # cd libssh2-1.1.tar.gz # ./configure # make
ここでエラーが出てしまいました。
なのでopensslの開発環境をインストール
# yum -y install openssl-devel
再度makeから実行
# make # make install
でlibssh2のコンパイル完了
# pecl install ssh2
エラーが出ました
Failed to download pecl/ssh2 within preferred state “stable”, latest release is version 0.11.0, stability “beta”, use “channel://pecl.php.net/ssh2-0.11.0″ to install
Cannot initialize ’ssh2′, invalid or missing package file
Package “ssh2″ is not valid
install failed
なので手動でssh2の最新版をインストール
# wget http://pecl.php.net/get/ssh2-0.11.0.tgz # tar zxvf ssh2-0.11.0.tgz # cd ssh2-0.11.0 # phpize # make # make install Installing shared extensions: /usr/lib64/php/modules/
php.ini用にextensionを記載する
# vim /etc/php.d/ssh2.ini
extension=ssh2.so
Webサーバ再起動してphp.ini再読み込み
#service httpd restart
phpinfoにssh2の項目が表示されて
ssh2_connect()などが使えるようになりました
<?php
$connection = ssh2_connect('接続先ホスト', 22);
ssh2_auth_password($connection, 'ユーザー名', 'パスワード');
ssh2_scp_send($connection, 'sample.jpg', '/var/www/html/sample.jpg', 0644);
sample.jpgをリモートからファイルアップロードできました。
※ついでにPHPでリモートサーバのファイル削除テスト
<?php
$connection = ssh2_connect('接続先ホスト', 22);
ssh2_auth_password($connection, 'ユーザー名', 'パスワード');
$sftp = ssh2_sftp($connection);
ssh2_sftp_unlink($sftp, '/var/www/html/sample.jpg');
sample.jpgをリモートから削除できました。