2016-08-01 114 views
1

このトピックは何度か尋ねられましたが、すべての解決策が自分のマシンで動作していません。php_oci8_11g.dllは有効なWin32アプリケーションではありません

Windows 7と10G oracle dabataseを接続しようとしていますが、oci拡張子がロードされていません。ここではいくつかの事実:

C:\php>php -m

PHPの警告:PHPのスタートアップ:動的ライブラリをロードできません 'Cを:\ PHPの\のext \のphp_oci8_11g.dll' - %1は有効なWin32アプリケーションではありません。

C:\php>php -v

PHP 5.6.19 (cli) (built: Mar 2 2016 20:09:42) 
Copyright (c) 1997-2016 The PHP Group 
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies 
  • 64Xアーキテクチャ
  • TS VC11

C:\>tnsping localdb

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 02-AUG-2 
016 22:37:50 

トラブルシューティング

  • 私はoci8 2.0.11を使用しています。折り畳んでext/にそれらを落としました。残りのエクステンションはかなり読み込まれています。ので

    C:\>where oci*

    C:\oracle\product\10.2.0\db_2\BIN\oci.dll 
    C:\oracle\product\10.2.0\db_2\BIN\ocijdbc10.dll 
    C:\oracle\product\10.2.0\db_2\BIN\ociw32.dll 
    
  • Oracleクライアントは、私の側で必要とされていません:
  • PATH変数には、ORACLE_HOMEおよびPHPのパス
  • ちょうど必要なOracle DLLファイルのために見上げると、彼らはそこにある含まれていますデータベースは同じマシンにインストールされ、必要なすべてのライブラリがインストールされます

行方不明?事前にありがとう

+0

あなたはPHPがx64だと言っていますが、Oracleのインストールは何ですか? 「甘さ」は一致する必要があります。 – timclutton

答えて

3

数ヶ月後、解決策が見つかりました。次のインフラストラクチャを考えてみましょう:

  • のWindows Server 2012 R2 Standard Editionのx64の
  • のApache/2.4.18(Win64の)VC11
  • PHP 5.6.19 x86のVC11 TS

は時に細心の注意を取りますOracleインスタント・クライアントのダウンロード:

    サーバーがx64またはx86アーキテクチャである場合でも、32ビットの0123用にダウンロードする必要があります。
  • PHPはVC11でコンパイルされているので、でVC11ソースでOICをダウンロードする必要があります。ダウンロードしたファイルを解凍し、vc11フォルダがあるかどうかを確認できます。

両方の詳細は非常に重要です。両方の要件を満たしていれば、エラーはなくなりました。PHPを使用してOracleに接続することができました。

+0

同様の問題を抱えていますが、解決しても同じエラーメッセージが表示されます。私はWindows 10上です。 – cytsunny

関連する問題