[PHP-users 11409] DBクラスでpgsqlに接続できません。

Yoshiiro Tsumori php-users@php.gr.jp
Mon, 11 Nov 2002 01:16:33 +0900


DBクラスを使って、PostgreSQLとMySQLへ接続できるかテストしているの
ですが、PostgreSQLだけ接続できません(connect failed)。PHPのソー
スは以下のような、単純なものです。PHPは4.2.3、PostgreSQLは7.2.3、
OSはRedHat7.3です。

-------------------------------
<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis">
<title>PHP4のテスト3</title>
</head>

<? 
require_once 'DB.php';

	$dsn = "pgsql://nobody:@localhost/tsumori";
	$db = DB::connect($dsn);

	if (DB::isError($db)) {
		echo "ERROR: " . DB::errorMessage( $db );
	}else{
		echo "DB OK : " . $db->toString();
	}

?>
</body>
</html>
-------------------------------

PostgreSQLとMySQLには同じテーブルを作ってあり、psqlなどのフロンエ
ンドからは、両方とも問題なく使用出来ています。このスクリプトで、
データベースの部分を"pgsql"から、"mysql"にすると動作します。

PostgreSQLをデバックモード(16)で起動し、このスクリプトを動作さ
せたのですが、PostgreSQLからは何も出力されません。よって
PostgreSQLに全くアクセスしていないと判断。DBクラスのpgsql.phpを見
ていたのですが、まず117行の"ob_start()"がコールされてから、戻って
来ないのです。要するにPostgreSQLの接続前にスクリプトがアボートし
ているようなのです。試しにこの行をコメントアウトすると、以下のよ
うなエラーがで出るようになりました。

> Warning: pg_connect() unable to connect to PostgreSQL server: could not connect to server: 接続を拒否されま した Is the server running on host localhost and accepting TCP/IP connections on port 5432? in /usr/local/ lib/php/DB/pgsql.php on line 121
> ERROR: connect failed

こっちのpgsql.phpには、デバック用のechoを幾つか入れているので、行
番号が多少ずれています。また過去ログを検索すると、同じようにDB2のDB
クラスの接続部分にバグがあったという記述がありました。また
PHP4.2.2でこのスクリプトを走らせると、PostgreSQLでも動作します。

これはPHP4.2.3のバグと考えて良いのでしょうか。よろしくお願い致し
ます。

津守 美弘
http://www27.cds.ne.jp/~zeos/