- 環境
- Windows10 Pro 64bit
- PHP 7.3.14(32bit)
事象 : PHPコマンドでDLLがないと怒られた
Oracleデータベース(12c)を使うのでphp.ini
でコメントアウトを外したら、怒られた。
oci8_12cとpdo_ociのコメントアウトを外した
;省略
extension=oci8_12c ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
;extension=pdo_mysql
extension=pdo_oci
;省略
怒られた
$ php -v
PHP Warning: PHP Startup: Unable to load dynamic library 'oci8_12c' (tried: C:\apps\php-7.3.14-Win32-VC15-x86\ext\oci8_12c (指定されたモジュールが見つかりません。), C:\apps\php-7.3.14-Win32-VC15-x86\ext\php_oci8_12c.dll (%1 は有効な Win32 アプリケーションではありません。)) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'oci8_12c' (tried: C:\apps\php-7.3.14-Win32-VC15-x86\ext\oci8_12c (指定されたモジュールが見つかりません。), C:\apps\php-7.3.14-Win32-VC15-x86\ext\php_oci8_12c.dll (%1 は有効な Win32 アプリケーションではありません。)) in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library 'php_pdo_oci.dll' (tried: C:\apps\php-7.3.14-Win32-VC15-x86\ext\php_pdo_oci.dll (%1 は有効な Win32 アプリケーションではありません。), C:\apps\php-7.3.14-Win32-VC15-x86\ext\php_php_pdo_oci.dll.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0
Warning: PHP Startup: Unable to load dynamic library 'php_pdo_oci.dll' (tried: C:\apps\php-7.3.14-Win32-VC15-x86\ext\php_pdo_oci.dll (%1 は有効な Win32 アプリケーションではありません。), C:\apps\php-7.3.14-Win32-VC15-x86\ext\php_php_pdo_oci.dll.dll (指定されたモジュールが見つかりません。)) in Unknown on line 0
PHP 7.3.14 (cli) (built: Jan 21 2020 13:17:19) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.9.1, Copyright (c) 2002-2020, by Derick Rethans
# dllは所定のフォルダに格納されています。
$ ls -la /c/apps/php-7.3.14-Win32-VC15-x86/ext | grep oci
-rwxr-xr-x 1 pon 197609 132096 1月 21 14:20 php_oci8_12c.dll*
-rwxr-xr-x 1 pon 197609 26624 1月 21 14:20 php_pdo_oci.dll*
原因 : Oracle Database 12c Instant Clientがないから
ちゃんとphp.ini
に書いてある・・・・そういえば以前のPCではSQL*PLUS
をインストールしていた。
php.ini
extension=oci8_12c ; Use with Oracle Database 12c Instant Client
対応 : Instant Clientを配置する
失敗した対応 : PHPと違うbitのInstant Clientを配置した
- OInstant Client Downloads for Microsoft Windows (x64) 64-bitから「Version 12.2.0.1.0」のzipをダウンロードして使った。
- 事象は全く解決しなかった...
成功した対応 : PHPと同じbitのInstant Clientを配置した
- PHPのbitを確認する
- 「x86(32bit)」なのでInstant Client Downloads for Microsoft Windows 32-bitから「Version 12.2.0.1.0」の
instantclient-basiclite-nt-12.2.0.1.0.zip
をダウンロードして使った。 - ダウンロードしたzipを任意の場所に解凍する
- 解凍したフォルダへPATHを通す
# PHPのバージョンを確認する
$ php -r 'echo PHP_INT_SIZE;'$ php -r 'echo PHP_INT_SIZE;'
4
# ダウンロードしたzipを任意の場所に解凍する
$ unzip ~/Downloads/instantclient-basiclite-nt-12.2.0.1.0.zip -d /c/apps/oracle
Archive: /c/Users/pon/Downloads/instantclient-basiclite-nt-12.2.0.1.0.zip
creating: /c/apps/oracle/instantclient_12_2/
inflating: /c/apps/oracle/instantclient_12_2/oraocci12.sym
inflating: /c/apps/oracle/instantclient_12_2/oraociicus12.dll
inflating: /c/apps/oracle/instantclient_12_2/uidrvci.sym
inflating: /c/apps/oracle/instantclient_12_2/ocijdbc12.dll
inflating: /c/apps/oracle/instantclient_12_2/xstreams.jar
inflating: /c/apps/oracle/instantclient_12_2/orasql12.sym
inflating: /c/apps/oracle/instantclient_12_2/oraocci12d.dll
inflating: /c/apps/oracle/instantclient_12_2/genezi.exe
inflating: /c/apps/oracle/instantclient_12_2/ojdbc8.jar
inflating: /c/apps/oracle/instantclient_12_2/adrci.exe
inflating: /c/apps/oracle/instantclient_12_2/BASIC_LITE_README
inflating: /c/apps/oracle/instantclient_12_2/oraocci12d.sym
inflating: /c/apps/oracle/instantclient_12_2/orasql12.dll
inflating: /c/apps/oracle/instantclient_12_2/oraociicus12.sym
inflating: /c/apps/oracle/instantclient_12_2/oraocci12.dll
inflating: /c/apps/oracle/instantclient_12_2/ocijdbc12.sym
inflating: /c/apps/oracle/instantclient_12_2/orannzsbb12.dll
inflating: /c/apps/oracle/instantclient_12_2/ociw32.sym
inflating: /c/apps/oracle/instantclient_12_2/adrci.sym
creating: /c/apps/oracle/instantclient_12_2/vc14/
inflating: /c/apps/oracle/instantclient_12_2/vc14/oraocci12d.sym
inflating: /c/apps/oracle/instantclient_12_2/vc14/oraocci12d.dll
inflating: /c/apps/oracle/instantclient_12_2/vc14/oraocci12.dll
inflating: /c/apps/oracle/instantclient_12_2/vc14/oraocci12.sym
inflating: /c/apps/oracle/instantclient_12_2/oci.dll
inflating: /c/apps/oracle/instantclient_12_2/oraons.dll
inflating: /c/apps/oracle/instantclient_12_2/genezi.sym
inflating: /c/apps/oracle/instantclient_12_2/ociw32.dll
inflating: /c/apps/oracle/instantclient_12_2/oci.sym
inflating: /c/apps/oracle/instantclient_12_2/uidrvci.exe
inflating: /c/apps/oracle/instantclient_12_2/orannzsbb12.sym
# 解凍したフォルダへPATHを通す
$ printenv PATH | sed -e 's/:/:\n/g' | grep ora
/c/apps/oracle/instantclient_12_2_x32:
# 対応結果
$ php -v
PHP 7.3.14 (cli) (built: Jan 21 2020 13:17:19) ( ZTS MSVC15 (Visual C++ 2017) x86 )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.14, Copyright (c) 1998-2018 Zend Technologies
with Xdebug v2.9.1, Copyright (c) 2002-2020, by Derick Rethans