一般的に、phpでssh2を使いたい場合、peclライブラリのssh2をインストールする必要があります。
このpeclライブラリのssh2をインストールするとき、ちょっと、ひと癖あります。
そのため、このインストール手順について書かれた記事も多いのですが、ちょっと、不明瞭な記事も多いので、整理しておきます。
- 目次
- 履歴
2010年10月7日 初版
単純にpeclでインストールするとエラーになる
本来なら、何も考えずに以下のように入力すれば良さそうな感じがします。
|
|
一般的には 、 php-pear のパッケージ名であるはずですが、多少、名前が異なっていることもあります。
例えば、あえてphp5.2系をインストールする(CentOS 5,CentOS 6,Scientific Linux 6) で php52 をあえてインストールしている場合などは、php52-pear というパッケージがある場合がありますので、その場合は、そちらを利用するようにします。
また、pecl を利用する場合、phpizeが必要になります。phpizeは、php-dev(el) (RedHat系:php-devel , Debian系:php-dev)のパッケージに含まれています。これも先のpear同様多少パッケージ名の違いがありますので注意が必要です。
CentOS 5 CentOS 6 Scientific Linux 6
|
|
しかしながら、上記のとおり、CentOSでは、エラーになってしまいます。
このような場合の対処として、自力でインストールするような記事も多いのですが、それは、ちょっと、上記のエラーの趣旨と異なるような気がします。
先にエラーの意味は、単純に手順が誤っている旨のエラーなので、エラーメッセージのとおりの手順で行えばOKのはずです。
つまりは、「”channel://pecl.php.net/ssh2-0.11.3″を使いなさい」ということなので、それを使えば良いのですが、これを使ってインストールすると、今度は、不足しているライブリがあるというエラーが表示されます。
ここでは、その不足しているライブリを含めてpecl ssh2のインストール手順を整理しておきます。
peclでssh2をインストールする手順
- libssh2,libssh2-devel をインストールする。
これは、peclのssh2が上記のライブラリを必要としますので、先にインストールしておきます。
Debian系 : libssh2,libssh2-dev となります。また、マイナーバージョンが入ることがある( ex) libssh2-1-dev )ので、注意が必要です。CentOS 5 CentOS 6 Scientific Linux 6
$ yum -y install libssh2 libssh2-devel Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: www.ftp.ne.jp * base: www.ftp.ne.jp * epel: ftp.kddilabs.jp * extras: www.ftp.ne.jp * ius: pancks.sothatswhy.org.uk * updates: www.ftp.ne.jp Update-SRPM | 1.9 kB 00:00 Update-SRPM/primary_db | 68 kB 00:00 addons | 951 B 00:00 base | 2.1 kB 00:00 epel | 3.7 kB 00:00 epel/primary_db | 3.3 MB 00:00 : : : : Installed: libssh2.i386 0:0.18-10.el5 libssh2.x86_64 0:0.18-10.el5 libssh2-devel.i386 0:0.18-10.el5 libssh2-devel.x86_64 0:0.18-10.el5 Complete!
Debian 6 Ubuntu 10
$ aptitude install libssh2-1 libssh2-1-dev 以下の新規パッケージがインストールされます: libssh2-1 libssh2-1-dev 更新: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。 ... libssh2-1 (1.2.6-1) を設定しています ... libssh2-1-dev (1.2.6-1) を設定しています ...
ここで、libssh2.soのインストール先ディレクトリを確認しておきましょう。
peclでのssh2をインストールする際に、設定が必要になります。
- peclのssh2をインストールする。
※先のpeclでのssh2インストールでは、エラーが発生しました。そのエラーの内容は、channelを使ってインストールしなさい・・・の由のエラーですから、 以下のようにchannelを指定してあげるとうまくいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
$ pecl install channel://pecl.php.net/ssh2-0.11.3 downloading ssh2-0.11.3.tgz ... Starting to download ssh2-0.11.3.tgz (23,062 bytes) ........done: 23,062 bytes 5 source files, building running: phpize Configuring for: PHP Api Version: 20090626 Zend Module Api No: 20090626 Zend Extension Api No: 220090626 libssh2 prefix? [autodetect] : libssh2-1 building in /tmp/pear/temp/pear-build-rootmNH3GC/ssh2-0.11.3 running: /tmp/pear/temp/ssh2/configure --with-ssh2=libssh2-1 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 ... 1310829 208 -rwxr-xr-x 1 root root 207759 2012-07-05 15:35 /tmp/pear/temp/pear-build-rootmNH3GC/install-ssh2-0.11.3/usr/lib/php5/20090626/ssh2.so Build process completed successfully Installing '/usr/lib/php5/20090626/ssh2.so' install ok: channel://pecl.php.net/ssh2-0.11.3 configuration option "php_ini" is not set to php.ini location You should add "extension=ssh2.so" to php.ini
12行目 :ここで、libssh2 prefix?は、libssh2.soのインストール先ディレクトリを指定しなさい・・・ということなので、libssh2.soの存在するディレクトリを入力します。
64bit CentOSのデフォルトは、上記のディレクトリ( /usr/lib64 )となるでしょう。
- phpエクステンションとしてssh2を設定する。
ここでは、ssh2.ini というファイルを作成、編集します。
この初期設定ファイルを置くディレクトリは、各ディストリビューションで異なります。
参考
Debian 6 Ubuntu 10(Debian系) : /etc/php5/conf.d/
CentOS 5 CentOS 6 Scientific Linux 6(RedHat系) : /etc/php.d/
$ vi ssh2.ini ; Enable ssh2 extension module extension=ssh2.so
拡張ライブラリ ssh2.so をロードしているだけです。
- 最後にWEBサーバー上でも有効にします。
ここまでの設定で、コマンドラインからのphpを実行することでのssh2の利用は可能となりました。
しかし、WEBサーバーは、常に動いていますから、今までの変更内容は、WEBサーバーには反映されていません。
WEBサーバー経由で利用したい場合は、WEBサーバーを再起動して、変更内容を反映させます。
$ /etc/init.d/httpd restart
phpのサンプルコードを実行してみましょう
ここまで設定を終えたら、ssh2をphpの中で利用することができます。
|
|
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない、検索ができないことがあります。
2012年1月5日, 9:18 PM
[…] channel://pecl.php.net/ssh2-0.11.3からインストールしろってこと。。面倒。。 少し調べると、peclのssh2が上記のライブラリを必要とするのでそのライブラリをインストールするってことらしい。 […]