スタッフブログ
PHPにはSSH2の関数が用意されています。ここでは、CentOSにSSH2を入れる手順を書いておきます。試行錯誤込みで書いてますので、手っ取り早くうまく言ったコマンドだけ知りたい人はこのセクションの最後に飛んでください。
SSH2はPECLの拡張モジュールなので、下記のコマンドを実行すればいいとのこと。
pecl install ssh2-beta
実行してみた。
bash: pecl: command not found
...(-_-;;;
PECLが入ってなかったとは。PECLを入れるために下記のコマンドを実行しました。
yum -y install php-pear
すると、こんどは、Missing Dependencyのエラーが。なんという失敗続き;;
php-devel-5.1.6-27.el5.x86_64 from base has depsolving problems --> Missing Dependency: php = 5.1.6-27.el5 is needed by package php-devel-5.1.6-27.el5.x86_64 (base) Error: Missing Dependency: php = 5.1.6-27.el5 is needed by package php-devel-5.1.6-27.el5.x86_64 (base) You could try using --skip-broken to work around the problem You could try running: package-cleanup --problems package-cleanup --dupes rpm -Va --nofiles --nodigest The program package-cleanup is found in the yum-utils package.
稼働中のPHPのバージョンが5.2.14だったので、そのPHPをとってきたリポジトリからyumしました。
yum install --enablerepo=utterramblings php-pear
which peclとコマンドをたたいて、peclが入っているのを確認。
libssh2が必要らしいので、こちらもyumで取ってきます。
yum -y install libssh2 yum -y install libssh2-devel
peclからssh2を入れます。コマンドは、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 install failed
仕方がないので、下記のコマンドを実行。
pecl install channel://pecl.php.net/ssh2-0.11.0
ssh2のインストール中にlibssh2の場所を聞かれます。私の場合、/usrではなかったのでパスを指定しました。
libssh2 prefix? [/usr] : /usr/lib64
しかし、これではうまくいかずエラーが出てしまいました。今日は怒られてばかりです(笑)
ERROR: `/tmp/pear/download/ssh2-0.11.0/configure --with-ssh2=/usr/lib' failed
ググったらlibssh2-develも入れないといけないとわかったので、以下のコマンドを実行します。
yum install libssh2-devel
その後、再度peclコマンドでssh2をインストールします。今度こそうまくいったようなので、php.iniを編集します。
cd /etc/php.d/ # php.iniを設定しますが、私の環境では.iniを分割していたので、適当にzip.iniをコピーして編集しました。 cp zip.ini ssh2.ini vim ssh2.in
extension=ssh2.soに書き換えて保存します。あとは、Apacheを再起動して終わりです。
/etc/init.d/httpd restart
結局うまくいったコマンド
# yum install --enablerepo=utterramblings php-pear # yum -y install libssh2 # yum install libssh2-devel # pecl install channel://pecl.php.net/ssh2-0.11.0 # cd /etc/php.d/ ## php.iniを設定しますが、私の環境では.iniを分割していたので、適当にzip.iniをコピーして編集しました。 # cp zip.ini ssh2.ini # vim ssh2.ini extension=ssh2.soと書き込み # /etc/init.d/httpd restart