[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 メーリングリストの案内