2009年8月 5日

[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@xxxxx
>> http://ml.php.gr.jp/mailman/listinfo/php-users
>> PHP初心者のためのページ - 質問する前にはこちらをお読みください
>> http://oldwww.php.gr.jp/php/novice.php3
>
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2009年8月 5日 09:13
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/87257
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。