PHPにssh2(PECL拡張モジュール)を追加するメモ

※以下OSはCentOS6が前提

  • peclでインストールをしてみる
        
        $ sudo /usr/local/bin/pecl install ssh2
        
    しかし”ベータだからそれ用のchannelを使いなさい”と怒られる。
    ---ここから---
    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からインストールしよう。
        
        $ sudo /usr/local/bin/pecl install channel://pecl.php.net/ssh2-0.12
        
    でもssh2のライブラリがないのでコンパイルできない...
    ---ここから---
    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: x86_64-redhat-linux-gnu-phpize
    Configuring for:
    PHP Api Version: 20100412
    Zend Module Api No: 20100525
    Zend Extension Api No: 220100525
    libssh2 prefix? [autodetect] : 【ここはそのままリターン】
    building in /tmp/pear/temp/pear-build-rootPC6d0K/ssh2-0.12
    running: /tmp/pear/temp/ssh2/configure –with-ssh2
    checking for grep that handles long lines and -e… /bin/grep
    checking for egrep… /bin/grep -E
    【中略】
    checking for ssh2 files in default path… not found
    configure: error: The required libssh2 library was not found. You can obtain that package from http://sourceforge.net/projects/libssh2/
    ERROR: `/tmp/pear/temp/ssh2/configure –with-ssh2′ failed
    ---ここまで---
  • libssh2をインストール
    libssh2-develをインストールする。
    
      $ sudo yum -y install libssh2-devel
      
  • あらためてPECLのssh2をインストールする
    
      $ sudo /usr/local/bin/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: x86_64-redhat-linux-gnu-phpize
    Configuring for:
    PHP Api Version: 20100412
    Zend Module Api No: 20100525
    Zend Extension Api No: 220100525
    libssh2 prefix? [autodetect] :

    【中略】

    Build process completed successfully
    Installing ‘/usr/local/lib/php/20100525/ssh2.so’
    install ok: channel://pecl.php.net/ssh2-0.12
    configuration option “php_ini” is not set to php.ini location
    You should add “extension=ssh2.so” to php.ini
    ---ここまで---

  • 作成された「ssh2.so」が読み込まれるようにiniを作成
    Windowsとかだと「php.ini」に直接読み込ませるsoファイルが列記されてるけど、最近のCentOSとかでは「php.d」以下にiniファイルとして「extension=XXX.so」のように記述すると自動的に読み込まれる(勿論soファイル本体は指定のextension_dirにインストールされていること)。
    
      $ echo "extension=ssh2.so" | sudo tee /usr/local/etc/php.d/ssh2.ini
      

     

  • httpdを再起動しておく
    
      $ sudo /etc/init.d/httpd restart
      

     

  • 対話シェルでssh2の関数が追加されたかどうか確認してみる
    
      $ php -a
      ---ここから---
      Interactive mode enabled php > 
      echo function_exists('ssh2_connect').PHP_EOL;
      1
      ---ここまで---
      
    めでたし。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は 必須項目です。

管理者が承認次第、表示されます。

*