[PHP-users 21684]Re: --with-pgsql=他ホスト

Misha misha @ mbm.nifty.com
2004年 5月 17日 (月) 05:57:27 JST


ミーシャです。

> PostgreSQL と PHP がことなるホストで動作する環境で> PHP で PostgreSQL へコネクションを張りたい状況にあります。
> こういった状況で PHP インストール時に
> ./configure --with-pgsql=
> に指定するディレクトリはどう指定するのが正しいのでしょうか?
>
> PostgreSQL のホストから PHP をインストールするホストへ
> PostgreSQL ディレクトリ一式をコピーし、それを
> --with-pgsql=
> に渡してみたのですが、pg_connect()で
>
> Warning: pg_connect(): Unable to connect to PostgreSQL server: could not connect  to server: Bad file number Is the server running
on host
>  hoge.hoge.com and accepting TCP/IP connections on port 5432?
>
> というエラーが出てしまいます。

何やら、ごく初歩的なミス(というか、誤解)のような気がするのですが・・・。

少なくとも、表題の
> --with-pgsql=他ホスト
という設定は明らかに誤りです。
通常は、DBサーバに置くDBの実体としてのpostgreSQL とは別個に、
Webサーバ側にPostgresSQLをインストールし、PHPインストール時に、
 (必要とあらば)
--with-pgsql=/usr/local/pgsql (PostgreSQL のデフォルトインストール先ディレクトリ)
と、指定します。

現象から察するに、pg_connect() の存在自体は PHPが知っているのですから、
(Warning メッセージが、それを物語っています)
> --with-pgsql=
の問題ではなかろうと思います。
(そもそも、Webサーバ側でPostgreSQLをインストールするのは、
単に、PostgreSQL のライブラリをリンクするためのものですから)。
要は単に(おそらく接続を試みようとしている)、hogehoge.com に接続できない、というだけのことかと思われます。

ためしに、PHPをインストールしたホスト(WEBサーバ上に多分あるはずの)postgresでログインし、
psql -h DBホスト名 -d データベース名 [ -U postgres -W パスワード ]
と入力してみてください。
psql のコマンドプロンプトが表示されず、
上記と同じようなWarning メッセージが表示された場合、おそらく、DBホスト側の設定に問題があります。

1./usr/local/pgsql/data (デフォルトのデータディレクトリです) 下の
  postgresql.conf 内で、
   tcpip_socket = true
  となっていますか?
  (デフォルトはfalse で、この場合、DBは他ホストとの接続はできません)

2. 続いて、同ディレクトリ内にある
  pg_hba.conf
  の一番下の行で、
   localhost all                                          trust
   host        all 127.0.0.1 255.255.255.255  trust
  といったリストがあるかと思いますが、
  (実際の書式は、PostgreSQL のバージョンによって異なります)
  ここで、Web ホストの IPアドレス、サブマスク、そして、AUTH_TYPE に trust を指定しなければなりません。

「この程度のことは、すでにやっている」ということであれば、ご容赦のほどを。

なにしろ、PHP, PostgresSQL のバージョンどころか、サーバ構成すら、ご提示がないのですから、
この程度のお答えしかできない、とは、きしださんと同意見です。
できれば、もう少し詳しい情報が欲しいところです。

------------
Misha




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