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