[PHP-users 29221] LinuxからPEARでWin版Oracle9iに接続できない

Hisashi Chiba ch-999 @ beige.plala.or.jp
2006年 5月 17日 (水) 10:06:54 JST


千葉と申します。

今まで、Linux側でPostgreSQL7.3.2にApache、PHPで
アクセスしていましたが、訳あってWin版Oracle9iに
データベースを変更しようとしています。

現在のPHPスクリプトでは、Postgres関数をガリガリ
記述していましたが、DBサーバーを変更する際に、
PEAR DBパッケージを使ったものに変えようと考え、
テストしているのですが、Oracle に接続できず、
苦慮しています。
結果としてのエラーメッセージは

DB Error: no such database
と表示されてしまいます。

別のWindowsクライアントからSQL Plusでは
C:\>sqlplus dbuser/xxxxxx @ testdb
で接続でき、このクライアントのtransname.oraは
testdb =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = testdb)
    )
  )
としています。

なお、Linux側にOracleの環境は一切無く、
また、PHPのconfigure時のオプションは
./configure --with-pgsql --with-apxs=/usr/local/apache/bin/apxs
--enable-mbstring --enable-mbstr-enc-trans --enable-mbregex
--enable-versioning --without-mysql
とphpinfo()で表示されました。

テストスクリプトは以下のものです。
<?php
require_once ("DB.php");

$ServerName = "Sv001";
$DbName     = "testdb";
$TableName  = "table1";
$UserName   = "dbuser";
$Password   = "xxxxxx";

$dsn = "oci8://".$UserName.":".$Password."@".$ServerName."/".$DbName;
$db = DB::connect($dsn);
if (PEAR::isError($db)) {
        die($db->getMessage());
}

$sql = "select * from " . $TableName . ";";
$res = $db->query($sql);
if (PEAR::isError($res)) {
    die($res->getMessage());
}

while ($row = $res->fetchrow()) {
        echo $row[0] . $row[1] . $row[2] . $row[3] . "<br>\n";
}
$res->free();

?>


現在の環境は次のとおりです。
Linux RedHat7.3
PHP-4.4.2
Apache-1.3.27

Windows2003Server
Oracle9i


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