3

ローカルの WAMP サーバーと、所有している Oracle 11.1.0.7 の間の単純な接続を構成しようとしています。どうやらPHPには、起動に失敗するあらゆる種類のソリューションと魔法のような状況があります。

WAMP から最新の 32 ビット バージョンを実行しています (確認のため、今日もう一度取得しました) db マシンも 32 ビットであり、ローカルではありません

同じエラーが発生するたびに、データベースに接続しようとしたのは次のとおりです。

    $db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = some.ip.addr)(PORT = 1521)))(CONNECT_DATA=(SID=somesid)))";
    //$link = oci_connect('sqlmap', 'sqlmap', 'some.ip.addr') OR die('oci_connect' . print_r(oci_error()));
    //$link = oci_connect('sqlmap', 'sqlmap', $db) OR die('oci_connect error' . print_r(oci_error()));
    //$link = oci_connect('sqlmap','sqlmap', 'some.ip.addr/somesid') or die('<= oci_connect ' . print_r(oci_error()));
    //$link = oci_connect('sqlmap','sqlmap', '//some.ip.addr/somesid') or die('<= oci_connect ' . print_r(oci_error()));
    $link = oci_connect('sqlmap','sqlmap', '//some.ip.addr/somesid');

Warning: oci_connect() [function.oci-connect]: ORA-24315: illegal attribute type in


Array ( [code] => 24315 [message] => ORA-24315: illegal attribute type [offset] => 0 [sqltext] => ) oci_connect1

OCIに関するその他の情報

OCI8 Support    enabled
Version 1.4.7
Revision    $Revision: 321634 $
Active Persistent Connections   0
Active Connections  0
Oracle Run-time Client Library Version  10.2.0.1.0
Oracle Instant Client Version   11.2
Temporary Lob support   enabled
Collections support enabled

Directive   Local Value Master Value
oci8.connection_class   no value    no value
oci8.default_prefetch   100 100
oci8.events Off Off
oci8.max_persistent -1  -1
oci8.old_oci_close_semantics    Off Off
oci8.persistent_timeout -1  -1
oci8.ping_interval  60  60
oci8.privileged_connect Off Off
oci8.statement_cache_size   20  20


Apache Version :
2.2.21  
PHP Version :
5.3.9

誰かが私に欠けているものを教えてくれたら嬉しいです

4

2 に答える 2

2

構成を見ると、Oracle Client と Oracle Instant Client の両方がインストールされています。

Oracle Run-time Client Library Version  10.2.0.1.0
Oracle Instant Client Version   11.2

ただし、私の経験では、PHP はどちらか一方のみを使用します。基本的には、最初に見つかったライブラリ セットが使用されます。Oracle 10g には正常に接続できますが、11g には接続できないため、10g クライアント ライブラリはパス内でインスタント クライアント ライブラリよりも「上位」にあることが示唆されます。

検討することをお勧めする 2 つのオプション:

  1. 完全な Oracle 11g クライアントをインストールする
  2. 具体的にパスを変更して、Instant Client ライブラリが最初に見つかるようにします。もちろん、別のコンテキストの PATH 変数だけでなく、PHP が使用する有効なパスに影響を与えていることを確認してください...

実際に PHP を Instant Client で正しく動作させることはできませんでした - 私は完全なクライアントをあきらめてインストールしました - したがって、私の個人的な推奨はオプション 1 ですが、それがあなたの環境で実用的でない場合は、最初に PATH を使用してください。

于 2012-03-06T12:25:08.257 に答える