kuro

1 minute read

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

以下のサイトを参考にしても出来ない場合は、もしかしたらこの手段で解決できるかもしれない。
https://blogs.oracle.com/opal/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」が必要とある。
以下のリンクからそのダウンロードページを開く。
https://www.oracle.com/database/technologies/instant-client/microsoft-windows-32-downloads.html  

XAMMPの環境では32ビットのため、以下のリンクから32ビット版である「vcredist_x86.exe」をダウンロードする。
https://www.microsoft.com/ja-JP/download/details.aspx?id=26999

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

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