2009年11月 6日

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

近藤です。

お世話になります。

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@xxxxxアドレス:ポート番号/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@xxxxxアドレス:ポート番号/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 mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2009年11月 6日 15:56
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/90171
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。