XAMPPに複数のPHPバージョンの導入
- 一つのXAMPPパッケージに複数のPHPバージョン環境でテストすることがあります
- 詳細は:XAMPP環境の複数バージョンのPHPをインストールと設定 を参考してください
- もちろん、各PHPバージョンごとに、XAMPPをダウンロードして、必要応じで起動することもできます
新しいPHPバージョン(v7)を設定して、XAMPPが起動時にエラー:libssl2ロードエラー発生
- 低いPHPバージョン(v5.6)のXAMPPにPHP7環境を設定して、Apacheを起動すると、エラーが発生しました。
- libssh2.dllをロード時にエラーが発生したようです
The procedure entry point libssh2_scp_recv2 could not be located in the dynamic link library
原因:XAMPPのApacheにあるlibssh2.dll、ssleay32.dll、libeay32.dllの古いのせい
- XAMPPがphp5.6に対応するため、Apacheディレクトリにあるダイナミックライブラリ:libssh2.dll、ssleay32.dll、libeay32.dllのバージョンが低いため、appache起動時にphp_curl.dllロード時に上記エラーが発生しました。
解決:新しいバージョンのlibssh2.dll、ssleay32.dll、libeay32.dllの使用
- 解決手法はいろいろ考えられます。例えば、XAMPPにあるApacheディレクトにあるlibssh2.dll、ssleay32.dll、libeay32.dllファイルをバージョンアップします
- 複数のPHPバージョンがあるため、別のPHPバージョンを使用する際に、libssh2.dll、ssleay32.dll、libeay32.dllを更新することが面倒なので、この方法をあまりお勧めしません
- 各PHPバージョンの定義ファイル(php.ini)に各自のlibssh2.dll、ssleay32.dll、libeay32.dllロードする記述をします
LoadFile "C:/develop/servers/xampp-5.6.15/php-7.0.27-Win32-VC14-x86/libeay32.dll" LoadFile "C:/develop/servers/xampp-5.6.15/php-7.0.27-Win32-VC14-x86/libssh2.dll" LoadFile "C:/develop/servers/xampp-5.6.15/php-7.0.27-Win32-VC14-x86/ssleay32.dll" extension=php_curl.dll
- ポイントは:Pope_curl.dllをロードする前に、各PHP環境にあるlibeay32.dll、libssh2.dll、ssleay32.dllをロードします