[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/