レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

phpでssh2を使えるようにpecl ssh2をインストールする

2010年10月7日 2014年1月14日
php ssh2

一般的に、phpでssh2を使いたい場合、peclライブラリのssh2をインストールする必要があります。
このpeclライブラリのssh2をインストールするとき、ちょっと、ひと癖あります。 そのため、このインストール手順について書かれた記事も多いのですが、ちょっと、不明瞭な記事も多いので、整理しておきます。

単純にpeclでインストールするとエラーになる

本来なら、何も考えずに以下のように入力すれば良さそうな感じがします。

$ 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.3" to install
install failed
そもそもpeclで コマンドがない とエラーが出力された場合、pear がインストールされていません。
$ pecl install ssh2
bash: pecl: コマンドが見つかりません
まずは、pear をインストールしましょう。
一般的には 、 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
$ yum install php-pear php-devel
...
Debian 6 Ubuntu 10
$ aptitude install php-pear php-dev
...

しかしながら、上記のとおり、CentOSでは、エラーになってしまいます。

このような場合の対処として、自力でインストールするような記事も多いのですが、それは、ちょっと、上記のエラーの趣旨と異なるような気がします。

先にエラーの意味は、単純に手順が誤っている旨のエラーなので、エラーメッセージのとおりの手順で行えばOKのはずです。
つまりは、「”channel://pecl.php.net/ssh2-0.11.3″を使いなさい」ということなので、それを使えば良いのですが、これを使ってインストールすると、今度は、不足しているライブリがあるというエラーが表示されます。

ここでは、その不足しているライブリを含めてpecl ssh2のインストール手順を整理しておきます。

peclでssh2をインストールする手順

  1. 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をインストールする際に、設定が必要になります。

  2. 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
    
    $ 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 )となるでしょう。

  3. 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 をロードしているだけです。

  4. 最後にWEBサーバー上でも有効にします。

    ここまでの設定で、コマンドラインからのphpを実行することでのssh2の利用は可能となりました。
    しかし、WEBサーバーは、常に動いていますから、今までの変更内容は、WEBサーバーには反映されていません。

    WEBサーバー経由で利用したい場合は、WEBサーバーを再起動して、変更内容を反映させます。

    $ /etc/init.d/httpd restart

phpのサンプルコードを実行してみましょう

ここまで設定を終えたら、ssh2をphpの中で利用することができます。

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
<?php
$host = '111.111.111.111';	//	接続先ホスト名(IPアドレスでも可)
$port = 22;	//	ssh のポート番号
$user = 'username';	//	sshでログイン可能なユーザ名
$pass = 'userpassword';	//	sshでログイン時のパスワード

$srcf = 'test.snd';	//	SSHでダウンロードする元のファイル名
$dstf = 'test.dst';	//	SSHでダウンロードした後のファイル名

$connection = ssh2_connect($host, $port);
if($connection!==false){
	ssh2_auth_password($connection, $user, $pass);
	$bret = ssh2_scp_recv($connection, $srcf, $dstf);
	if($bret){
		if(file_exists($dstf)){
			echo "OK\n";
		} else {
			echo "NG#1\n";
		}
	} else {
		echo "NG#2\n";
	}
} else {
	echo "NG#3\n";
}
?>
2行目から8行目までの各情報を各自の環境に合わせてやれば、確認できると思います。
もちろん、SSHでダウンロードする元のファイル名で指定したファイルが、サーバーになければなりません。絶対パスを用いない場合は、sshログインユーザのデフォルトカレントディレクトリからの論理パスとみなされます。
これを用いれば、sftpが使えますから、cronなどで自動的でファイルをかき集めることもできます。 phpを駆使すれば、サーバー間で、空きディスクを利用して相互でバックアップや、簡単な共有化などもできます。いろいろと幅が広がりますから、一度、試されるのも良いと思います。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

php 5.2系で APC (Alternative PHP Cache) をインストールする

前回、あえてphp5.2系をインストールする(CentOS 5,CentOS 6,Scientific Linux 6) で php5.2系をイ ...

php5.4系の最新版をインストールする

CentOS 5 の場合、yumを使って デフォルトでインストールされるのは、PHP5.1系です。 また、CentOS 6 Scie ...

php および APC の設定を行う

前回までの あえてphp5.2系をインストールする(CentOS 5,CentOS 6,Scientific Linux 6) ...

php5.3系の最新版をインストールする

CentOS 5 の場合、yumを使って デフォルトでインストールされるのは、PHP5.1系です。 また、CentOS 6 Scie ...

sshpassを使ってパスワード指定のSSH接続を行ってみる(パスワード指定自動ログイン)

今回は、SSHです。 sshpass( Non-interactive ssh password authentication ) を使う ...


1 件 コメントがあります。 コメントを投稿する
  1. […] channel://pecl.php.net/ssh2-0.11.3からインストールしろってこと。。面倒。。 少し調べると、peclのssh2が上記のライブラリを必要とするのでそのライブラリをインストールするってことらしい。 […]


コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2512 [s]