ローカルZendサーバーCEから外部ORADB11gに接続する際に深刻な問題が発生しています。OCI8が有効になっていて、バージョン1.4.6を実行しています(によるphpinfo()
)。
私は多くの接続オプション(以下にリストされています)を試しましたが、同じエラーが返されました:
oci_connect(): ORA-28547: connection to server failed, probable Oracle Net admin error
一日中グーグルした後、このエラーは、PHPがサーバーと通信できたが、具体的なサービス/データベースに接続できなかったことを意味し、エラーはPHP自体から発生するものではないとしか言えません...
この接続の説明を含むファイルが配置されている場所に環境変数TNS_ADMIN
を設定しました。c:\oracle_instantclient_11_2
tnsnames.ora
MYDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = X.X.X.X)(PORT = 1521))
)
(CONNECT_DATA = (SID = MYDB)(SERVER = DEDICATED))
)
この説明を次のように使用する
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=X.X.X.X)(PORT=1521)))(CONNECT_DATA=(SID=MYDB)(SERVER=DEDICATED)))
コンソールでサーバーとサービス/データベースにsqlplus
接続できるので、接続は非常に正しいです。また、ツールを使用してサーバーに接続するために、まったく同じHOST、PORT、およびSIDを使用していますSqldeveloper
。問題は、PHP内でサーバーに接続するときです...
私はこれまでに何を試しましたか:
oci_connect("user", "password", "X.X.X.X:1521", "AL32UTF8", 0);
oci_connect("user", "password", "MYDB", "AL32UTF8", 0);
oci_connect("user", "password", "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=X.X.X.X)(PORT=1521)))(CONNECT_DATA=(SID=MYDB)(SERVER=DEDICATED)))", "AL32UTF8", 0);
上記のこれらのoci_connect
呼び出しはすべて、前述の同じエラーを返します。
私もここでezconnect
述べたように11gの方法を試しました- :[//]host_name[:port][/service_name][:server_type][/instance_name]
oci_connect("user", "password", "X.X.X.X:1521/MYDB", "AL32UTF8", 0);
しかし、問題は、 ( )service name
だけがわからないことです。したがって、返されるエラーは次のとおりです。service ID
SID
oci_connect(): ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
これは、提供されたサービス名で実行されているサービスがないことを示します(または、ORAリスナーがそのようなサービスを認識していません)。
PHPバージョン:5.3.14
Appache v .: 2.2.22(32ビット)Zend
ZendサーバーCE:5.3.6
OCI8のPHP情報:
OCI8 Support enabled
Version 1.4.6
Revision $Revision: 313688 $
Active Persistent Connections 0
Active Connections 0
Oracle Instant Client Version Unknown
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
おそらく問題は、パスがと環境変数の両方に設定されているにもかかわらず、のunknown
バージョンがあることです...Oracle instant client
TNS_ADMIN
PATH
私の質問は:私が間違ったことを誰かが知っていますか?私は何かが足りないのですか?私は昨日一日中グーグルで検索したので、おそらく(99%の確率で)グーグルリンクを提供したいと思います。私はすでに見て試しました...
この質問はこの質問の正確な複製と見なすことができますが、まだ回答されておらず、コメントを投稿しても、接続の問題が発生しているため、誰もその古い質問に戻ることはないと思います。また、同様の質問では、別のエラーが返され、質問されることにも注意してください。