[PHP-users 34689] Re: PostgreSQLへの接続が確立できない
ml1 @ k2street.com
ml1 @ k2street.com
2009年 8月 5日 (水) 16:54:49 JST
他のWeb系の php からだとうまくいっているのでしたら別ですが、
postgresqlのユーザーとして apache が登録されていますか?
あまりに基本的な確認ですみません。
----- Original Message -----
From: "NASUNO Isao" <isao.nasuno @ ctc-g.co.jp>
To: <php-users @ php.gr.jp>
Sent: Wednesday, August 05, 2009 9:13 AM
Subject: [PHP-users 34686] Re: PostgreSQLへの接続が確立できない
> 那須野です。
>
> ありがとうございました!
> そのセンで調べてみます。
>
>
> Tatsuo Ishii さんは書きました:
>> ということは、SELinux絡みのような感じですね。
>> SELinuxは詳しくないのですが、たとえばこれが参考にならないでしょうか。
>>
>> http://slashdot.jp/~shimashima/journal/450453?m=1
>> --
>> Tatsuo Ishii
>> SRA OSS, Inc. Japan
>>
>>> 不勉強で、UNIX ドメインソケットについてよく分からないのですが、
>>> PHPの設定などとは関係なく、PostgreSQLの設定ということでしょうか。
>>> それらしい設定をPostgreSQLについて見てみると(今、マシンが手元にないのですが)、
>>>
>>> - /tmp/.s.PGSQL...というファイルはできていました。
>>> これが、UNIXドメインソケットを使っているということでしょうか。
>>>
>>> - /tmp は、drwxrwxrwt になっていたと思います。
>>> なお、HTTPDはapacheユーザで起動していますが、ログインできないユーザとして
>>> 定義しています。
>>>
>>> - pg_hba.conf
>>> local all all trust としています。
>>>
>>>
>>> Tatsuo Ishii さんは書きました:
>>>> 石井と申します。
>>>>
>>>>> RedHat5の上で、Apache+PostgreSQL+PHPの開発をしています。
>>>>> PostgreSQLへの接続が確立できないという状況に陥り、
>>>>> 助言を求めたくて投稿した次第です。
>>>>> CGIで動作するPHPだけが、PostgreSQLに接続できない状態です。
>>>>>
>>>>>
>>>>> ●バージョン等
>>>>> - Apache 2.2.3 (pre-install)
>>>>> - PHP 5.2.5
>>>>> - PostgreSQL 8.3.5 (自分でコンパイル)
>>>>>
>>>>> PHPは、CGI版としてコンパイルされているもので、
>>>>> (株)オークニーさんが、MapServerという製品のCGIとして販売しているものです。
>>>>> 通常のCGI版と、特に変わりはありません。
>>>>>
>>>>> ●ソース
>>>>> 以下のような簡単なソースでテストしています。
>>>>> テーブルのレコード数を出すだけです。
>>>>> ----------------------------------------------------------------------------
>>>>> <?php
>>>>> $link = pg_connect("dbname=DBNAME user=USER password=PASS port=xxxx");
>>>>> $rs=pg_exec("select col from table");
>>>>> $ct=pg_numrows($rs);
>>>>> print($ct);
>>>>> pg_close($link);
>>>>> ?>
>>>>> ----------------------------------------------------------------------------
>>>>>
>>>>> ●状況
>>>>> 上記のソースをCGIとして実行させると、pg_connect() 実行時に、
>>>>> 「Unable to connect to PostgreSQL server: could not create socket:
>>>>> Permission denied」
>>>>> というエラーが発生します。
>>>>>
>>>>> CGI版PHPを、インタラクティブモードで(-a オプションで)、
>>>>> まったく同じ内容を実行させると、正常動作します。
>>>>> なので、PostgreSQL側には問題なさそうです。
>>>>> 実際、同じマシンでJAVA/JSPも使っているのですが、javaからの接続はできます。
>>>>>
>>>>>
>>>>>
>>>>> Apache実行ユーザの環境と、インタラクティブモードで実行したユーザの環境の違いと
>>>>> 思うのですが、どう解決してよいのかわかりません。
>>>>> phpinfo(); を、CGI/インタラクティブモード の両者で実行した違いは、
>>>>> 環境変数以外には違いがありませんでした。
>>>> おそらくUNIXドメインソケットをソケットを作れる/作れないという、実行ユー
>>>>
>>>>
>>>> ザ権限の問題だと思います。ソケットを作るためのディレクトリ(デフォルト
>>>> なら/tmp)のパーミッションはどうなっていますか?
>>>>
>>>> ちなみにJavaはINETドメインソケットを使っているので、今回のエラーは関係
>>>> ないです。
>>>> --
>>>> Tatsuo Ishii
>>>> SRA OSS, Inc. Japan
>>>>
>>> _______________________________________________
>>> PHP-users mailing list PHP-users @ php.gr.jp
>>> http://ml.php.gr.jp/mailman/listinfo/php-users
>>> PHP初心者のためのページ - 質問する前にはこちらをお読みください
>>> http://oldwww.php.gr.jp/php/novice.php3
>>
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
>
PHP-users メーリングリストの案内