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

View: New views
7 Messages — Rating Filter:   Alert me  

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

by NASUNO Isao :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

初めて質問します、那須野と申します。
長文ですみません。

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/インタラクティブモード の両者で実行した違いは、
環境変数以外には違いがありませんでした。

アドバイスいただけないでしょうか。
よろしくお願いいたします。




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

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

by Tatsuo Ishii :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

石井と申します。

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

Parent Message unknown [PHP-users 34682] Re: PostgreSQLへの接続が確立できない

by NASUNO Isao :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

石井様

那須野です。
お返事、ありがとうございます。

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

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

by Tatsuo Ishii :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

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

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

by NASUNO Isao :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

那須野です。

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


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

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

by ml1 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message




他のWeb系の php からだとうまくいっているのでしたら別ですが、
postgresqlのユーザーとして apache が登録されていますか?

あまりに基本的な確認ですみません。


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

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

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

by NASUNO Isao :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

那須野です。

> 他のWeb系の php からだとうまくいっているのでしたら別ですが、
> postgresqlのユーザーとして apache が登録されていますか?

PostgreSQLユーザには登録しておらず、接続時にユーザ名を指定しています。


相変わらず、件のサーバが手元にないのですが、
CentOS5.2のテスト環境でSELinuxをenforcingにしてみたら、同じ現象が出ました。
本機も enforcing に設定されていることが分かりましたので、
石井さんのご指摘のとおりなのだと思います。

皆さま、ご指摘ご助言、ありがとうございました。


ml1@... さんは書きました:

>
> 他のWeb系の php からだとうまくいっているのでしたら別ですが、
> postgresqlのユーザーとして apache が登録されていますか?
>
> あまりに基本的な確認ですみません。
>
>
> ----- Original Message ----- From: "NASUNO Isao" <isao.nasuno@...>
> To: <php-users@...>
> 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@...
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3