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

Tatsuo Ishii t-ishii @ sra.co.jp
2009年 8月 5日 (水) 00:41:23 JST


ということは、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 メーリングリストの案内