macOSのPHPでssh2を使えるようにする

こんにちは、さるまりんです。

macOSのPHPでssh2の機能を使いたくて、モジュールがインストールされているかを調べてみました。

$ php -m | grep ssh2

何も表示されません。

こんなプログラムで試してみます。

is_ssh2_available.php

<?php

if (function_exists('ssh2_connect')) {
    echo 'ssh2_connect() is available';
} else {
    echo 'ssh2_connect() is not available';
}

ssh2_connect()関数が存在すればavailable、存在しなければnot availableと表示されます。

実行してみました。

$ php is_ssh2_available.php 
ssh2_connect() is not available

not available… 存在しないようです。

ssh2の機能を利用できるようにするには次の手順を実行します。

phpがインストールされてなければ、まずはbrewphpをインストール。

brew install php

(上のPHPスクリプトが実行できる。ということは、PHPがすでにインストールされています。事前にbrewでphpをインストールしていたので、今回はこの手順はスキップしました。)

続いてbrewlibssh2をインストールします。

brew install libssh2

続いてphpのssh2モジュールをインストールします。

cd ~/Downloads
git clone https://git.php.net/repository/pecl/networking/ssh2.git
cd ssh2
phpize
./configure
make
make install

ssh2を利用できるように設定ファイルを追加します。

$ php --ini
Configuration File (php.ini) Path: /usr/local/etc/php/8.0
Loaded Configuration File:         /usr/local/etc/php/8.0/php.ini
Scan for additional .ini files in: /usr/local/etc/php/8.0/conf.d
Additional .ini files parsed:      /usr/local/etc/php/8.0/conf.d/ext-opcache.ini

ディレクトリ/usr/local/etc/php/8.0/conf.dより、設定ファイルを読み込んでくれるので、そのディレクトリに次のファイルを追加します。

ssh2.ini

extension="ssh2.so"

これで使えるはずです。

確認してみます。

$ php -m | grep ssh
ssh2

ssh2と表示されました。

上のスクリプトを実行してみます。

$ php is_ssh2_available.php 
ssh2_connect() is available

available! ssh2_connect()関数が存在しています。

これで使えるようになりました!

前回の記事はこれをやろうとして、色々やってる中で試したことでした。

一つのことからいろんなことを学べますね。がんばります!

読んでくださってありがとうございました。

それではまた!