phpのSSH2をCentOS 6で使えるようにする

投稿日:

別なサーバーにファイルをコピーし無くてはならない処理があって、もとのファイルが php だったので ssh2_scp_send を使ってコピーしようと思ったんですが、最近まっさらな状態から作ったばかりのサーバーで SSH2系の関数が使えない。

ならインストールすれば使えるだろうっと、簡単に考えていたら結構手間取ったので、一応書いておきます。

が、結論から書くと epel 使って yum でインストールすれば何も考えずに使えますってお話。

どういうポリシーでサーバーのセットアップをするかは人それぞれだと思うのですが、私の場合、最近は yum でセットアップするほうが多いです。

php をコンパイルして使っても良いと思いますが、結局メンテナンスが面倒になるので、ほとんど rpm から。

で、出来ればサードパーティのリポジトリは使わずに済めばそれがベストかなぁっと、そんな感じで epel 使わずにセットアップしようと思ったら面倒な事になりました。

まず、PEAR がインストールされていなかったのでインストールします。

yum install php-pear

で、次に pecl を使って ssh2 をインストールしようとしますがエラー。

pecl install ssh2
Failed to download pecl/ssh2 within preferred state "stable", latest release is version 0.12, stability "beta", use "channel://pecl.php.net/ssh2-0.12" to install
install failed

どうやら channel://pecl.php.net/ssh2-0.12 を使ってインストールしろって事らしいのでやり直し。

pecl install channel://pecl.php.net/ssh2-0.12
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading ssh2-0.12.tgz ...
Starting to download ssh2-0.12.tgz (26,223 bytes)
.........done: 26,223 bytes
6 source files, building
running: phpize
sh: phpize: command not found
ERROR: `phpize' failed

またエラーが出てますが、
sh: phpize: command not found
ということなので、phpize が無くてエラーになっているみたいです。

ということで、phpize を使えるようにするために、php-devel をインストールします。

yum install php-devel

では、気を取りなおして再度実行。

pecl install channel://pecl.php.net/ssh2-0.12
downloading ssh2-0.12.tgz ...
Starting to download ssh2-0.12.tgz (26,223 bytes)
.........done: 26,223 bytes
6 source files, building
running: phpize
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
libssh2 prefix? [autodetect] :
building in /var/tmp/pear-build-rootJxu7Cc/ssh2-0.12
running: /var/tmp/ssh2/configure --with-ssh2
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... no
checking for gcc... no
configure: error: in `/var/tmp/pear-build-rootJxu7Cc/ssh2-0.12':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
ERROR: `/var/tmp/ssh2/configure --with-ssh2' failed

今度は、何か別な所でエラーが出てしまいました。
configure: error: in `/var/tmp/pear-build-rootJxu7Cc/ssh2-0.12':
configure: error: no acceptable C compiler found in $PATH

で、config.log を見ろとのことなんですが、config.log 自体発見できずコンパイルに使ってるテンポラリファイルもエラー後に消えてしまうので、これ以上追うのが難しくなってしまいました。


この時点では単純に gcc とかが入っていないからかもしれない(っと言うか、この時点のエラーの原因はこれ)のですが、他にも make とか必須っぽいものが全く入っていないという状態でした・・・

で、エラーの度に必要な物を入れていっても良いし、それが正解だとは思いますが、いい加減面倒になってしまったので、これ以上は調査せず別な方法を探すことに。

で、検索したら epel に php-pecl-ssh2 ってパッケージがあるじゃん・・・と。

まぁ、なんとも言えないところなんですけどね・・・

個人的には、この手の拡張ライブラリっぽいのは pecl とか pear コマンド使って入れたほうが良いと思います。

が、yum で入るならそっちの方が圧倒的に作業は楽。

なので、今回は yum で入れてみました。


まずは、epel リポジトリを追加しておきます。

私はサードパーティのリポジトリを使う場合には yum-priorities を使うようにしてますが、CentOS 6 だと yum-plugin-priorities って名前になった(戻った)んですね。

まぁ、どっちでもいいですが。

cd /tmp/
wget http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-rel*

使う rpm はOS毎に違うので、この辺りを見て確認して下さい。

で、php-pecl-ssh2 をインストールします。

yum install php-pecl-ssh2

以上。

軽くテストした感じ、普通に使えてます。

まぁ、今回はまっさらに近い状態の OS だったので、面倒だったのかも知れませんが、圧倒的に yum でインストールしたほうが楽ですね。。。


(2013-02-01 追記)
その後、問題が発覚したので入れなおしました。
その際のエントリーはコチラ→「phpのSSH2をCentOS 6で使えるようにする - 続編

更新日: