OCI8がgit bashやコマンドプロンプトで認識されない

カテゴリ: Programming

公開日: 2020-07-20 by kuro

OCI8がgit bashやコマンドプロンプトで認識されない

以下のサイトを参考にしても出来ない場合は、もしかしたらこの手段で解決できるかもしれない。
Installing XAMPP for PHP and Oracle Database

PHPINFOやXAMPPのshellで確認すると正常にOCI8が読み込まれているのに、bashやコマンドプロンプトからは読み込まれていない現象が発生した。

エラー
Git Bashにて (コマンドプロンプトも同様)

$ php --ri oci8
PHP Warning:  PHP Startup: Unable to load dynamic library 'ext\php_oci8_12c.dll' - 指定されたモジュールが見つかりません。
 in Unknown on line 0

Warning: PHP Startup: Unable to load dynamic library 'ext\php_oci8_12c.dll' - 指定されたモジュールが見つかりません。
 in Unknown on line 0
Extension 'oci8' not present.

正常
XAMPP for Windows(XAMPPコントロールパネルのshellボタンから)

php --ri oci8

oci8

OCI8 Support => enabled
OCI8 DTrace Support => disabled
OCI8 Version => 2.1.8
Revision => $Id: faekfjas4asd5f465a1sd8f1sd1fasd $
Oracle Run-time Client Library Version => 12.1.0.2.0
Oracle Compile-time Instant Client Version => 12.1

解決策
まず、Windowsの「設定」->「アプリと機能」から「Microsoft Visual C++ 2010 x86 Redistributable」が存在するか確認する。

なければ以下のサイトで該当のoracle instant clientのバージョンを探す。
例では「Version 12.1.0.2.0」の「Instant Client Package - Basic」には「Microsoft Visual Studio 2010 Redistributable」が必要とある。
以下のリンクからそのダウンロードページを開く。
Oracle Instant Client Downloads for Microsoft Windows (32-bit)

ダウンロードしたファイルを実行し「Microsoft Visual C++ 2010 x86 Redistributable」をインストールすると解決した。

原因はoci8関連のdllをxampp\phpに配置してphp.iniに記述してあっても、端末自体に32ビット版の「Microsoft Visual Studio 2010 Redistributable」がインストールされていないと、XAMPPの外からは実行できないからと思われる。