QuickAnswer
by

XAMPP PHP7.2 でSSH2。 Call to undefined function ssh2_connect()

XAMPP PHP7.2 でSSH2。 Call to undefined function ssh2_connect()

XAMPP PHP7.2の環境でssh2_connect()が使用できなかったことについてメモ。

XAMPPのApacheエラーログには下記の記述

PHP Warning: PHP Startup: Unable to load dynamic library 'ssh2'

試行したこと

php/ext/php_ssh2.dll
php/ext/php_ssh2.pdb
を用意して、
httpd-xampp.conf に LoadFile "C:/xampp72/php/libssh2.dll" と記述。

php.ini には extension=ssh2 の記述。

libssh2.dll を C:/Windows/SysWOW64 や C:/Windows/System32 に入れて、
C:\> regsvr32 libssh2.dll を実行するなど、得られる情報をすべて試したがダメだった。

Windows環境変数 PATH も確認。

バージョンの違い

phpのバージョンを今一度確認すると、ダウンロードできるアーカイブは
php-7.2.10-Win32-VC15-x86.zip
php-7.1.22-Win32-VC14-x86.zip
である。

今回使用した php_ssh2.dll は、
php_ssh2-1.1.2-7.1-ts-vc14-x86.zip

php7.2は vc15、 php_ssh2.dllは vc14 。ここでバージョン違いに気付く。

PHP7.2のコンパイル済みDLLは用意されていなかった

vc15 の php_ssh2.dll を探したが、現在(2018.9.23)のところ、用意されていないらしい。ソースは公開されているので自分でコンパイルすれば良いようだ。

今回は php7.1 で使用することで解決とした。

XAMPP PHP7.1 を用意

XAMPP PHP7.1 を用意して、以下の設定を行う。

php_ssh2-1.1.2-7.1-ts-vc14-x86.zip の php_ssh2.dll と php_ssh2.pdb を
php/ext/php_ssh2.dll
php/ext/php_ssh2.pdb
にコピー。

php.ini には
extension=php_ssh2.dll
を記述。

httpd-xampp.conf に
LoadFile "C:/xampp71/php/libssh2.dll"
を記述。

確認

var_dump(function_exists('ssh2_connect')); //bool(true)

phpinfo() でも ssh2 support の記述を確認。

CONTENTS