[PHP-users 34686] Re: PostgreSQLへの接続が確立できない

NASUNO Isao isao.nasuno @ ctc-g.co.jp
2009年 8月 5日 (水) 09:13:55 JST


那須野です。

ありがとうございました!
そのセンで調べてみます。


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