[PHP-users 34830] PHP PEARでOracleにアクセスするにはどうすればいいでしょうか。

kondo nobuaki3.kondo @ toshiba.co.jp
2009年 11月 6日 (金) 15:56:29 JST


近藤です。
お世話になります。
Oracleが入ってないサーバAからORACLEが稼動しているサーバBにPHPでアクセス
したいと思っています。
インターネットで検索しながら試行錯誤していますが、なかなかつながらないので、
助言をいただければと思います。
PHPからOracleへのアクセスは大きく分けてPHPのコンパイル、PEARのパッケージ、
ZendFrameworkを使うの3種類あるようなことが判ったので、PHPのアップデートを
考えるとPHPをソースからコンパイルするのは避けたく、ZendFrameworkは使ったこと
が無かったのでPEARで行こうかと思い、挑戦中です。
サンプルを参考に、以下の接続プログラムを作りましたが、つながりません。
気になるのが、'oci8://ユーザ名:パスワード@IPアドレス:ポート番号/DB名';
と指定しているのにMDB2::connect($dsn)すると、エラーが
「** oci8(oci8)://DB名:xxx @ IPアドレス:ポート番号/DB名"」
となることです。
何故かユーザ名がDB名に置き換わってます。
どうすれば接続できますでしょうか?
助言の方をよろしくお願いします。
しかく接続テストプログラム
<?php
require_once 'MDB2.php';
$dsn = 'oci8://ユーザ名:パスワード@IPアドレス:ポート番号/DB名';
$mdb2 =& MDB2::connect($dsn);
if (PEAR::isError($mdb2)) {
 //var_dump($mdb2);
 var_dump($mdb2->getuserinfo());
 die($mdb2->getMessage()."\n");
}else{
 print "Success!!\n";
 //クエリを実行します
 $res =& $mdb2->query('SELECT * FROM テーブル名');
 // 結果がエラーでないかどうかを常にチェックします
 if (PEAR::isError($res)) {
 die($res->getMessage());
 }else{
 print "Success!!\n";
 }
}
$mdb2->disconnect();
?>
しかく実行結果
# php test.php
string(254) "_doConnect: [Error message: unable to establish a connection]
[Native code: 12162]
[Native message: ORA-12162: TNS: 指定されたNetサービス名は正しくありません。] 
 ** oci8(oci8)://DB名:xxx @ IPアドレス:ポート番号/DB名"
MDB2 Error: connect failed
しかくサーバA側
・OSはRedHatEL5です。
・サーバAにはoracle-instantclient11.2をインストールしました。
・環境変数は、以下のような実行してます。
export 
PATH=$PATH:/usr/lib/oracle/11.2/client/bin/:/usr/lib/oracle/11.2/client/lib/
export NLS_LANG=JAPANESE_JAPAN.AL32UTF8
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client/lib/
export ORACLE_HOME=/usr/lib/oracle/11.2/client/
export TNS_ADMIN=/usr/lib/oracle/11.2/client/network/admin/
(注記)「sqlplus ユーザ名/パスワード@DB名」だと接続できます。
・/usr/lib/oracle/11.2/client/network/admin/tnsnames.oraの内容
------------------------------------------------------------
DB名 =
 (DESCRIPTION=
 (ADDRESS_LIST=
 (ADDRESS =
 (COMMUNITY=tcp.world)
 (PROTOCOL=TCP)
 (Host=IPアドレス)
 (Port=ポート番号)
 )
 )
 (CONNECT_DATA=(SID=SID)
 )
 )
------------------------------------------------------------
・PHPパッケージ
# rpm -qa | grep php・・・PHPのバージョン
php-pear-1.4.9-4.el5.1
php-pdo-5.1.6-23.2.el5_3
php-mysql-5.1.6-23.2.el5_3
php-devel-5.1.6-23.2.el5_3
php-common-5.1.6-23.2.el5_3
php-ldap-5.1.6-23.2.el5_3
php-cli-5.1.6-23.2.el5_3
php-mbstring-5.1.6-23.2.el5_3
php-5.1.6-23.2.el5_3
・PEARのインストールパッケージ
PEARのMDB2,MDB2_Driver_oci8をインストール
# pear list
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.1 stable
Console_Getopt 1.2 stable
DB 1.7.13 stable
MDB2 2.4.1 stable
MDB2_Driver_oci8 1.4.1 stable
PEAR 1.4.9 stable
XML_RPC 1.5.0 stable
・PHPでOCI8が認識されているか
# php -i | grep oci8
oci8
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


PHP-users メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /