[PHP-users 21382]解決しました(Re: .forwardからの標準入力で起動したスクリプトでpg_connectができない)

cxn03651 @ msj.biglobe.ne.jp cxn03651 @ msj.biglobe.ne.jp
2004年 4月 20日 (火) 15:21:00 JST


渡辺 様、ご助言いただいた皆様 <- 中村

 お世話になります。

on Tue, 20 Apr 2004 14:57:59 +0900
"Y.Watanabe" <yuw @ msj.biglobe.ne.jp>wrote
in 「[PHP-users 21379] Re: .forwardからの標準入力で起動したスクリプトでpg_connectができない」:

> 上記のコードで、コマンドラインから/usr/bin/phpを直接たたいて実行すると
> DBにちゃんと接続できて、画面経由でも接続できて、
> メール経由で実行すると接続できない、
> ということであればは、単に、
> DB接続するときのユーザー設定の問題である、に一票。

 私もその希望を捨てきれずにいました。ミワさんの
on Tue, 20 Apr 2004 12:18:47 +0900
Eiji Miwa <miwa @ offside.ne.jp>wrote
in 「[PHP-users 21362] Re: .forwardからの標準入力で起動したスクリ」:

>  .forward を動かしてるユーザーを
>  postgres へ createuser してみるとか。

を受けて、forwardしたときはどのユーザがスクリプトを実行しているのかわか
らないかなと思って/var/log/maillogを見ていたところ、noboyなるユーザがメー
ルを送っていることを発見しました。

 で、渡辺さんのご指摘を踏まえ、

> (1) そもそも createuserコマンドでDBユーザーを作っていますか?
> (2) create tableとかcreate indexして
>     それらのテーブルやindexに、(1)で作ったDBユーザーへのGRANTを
>     発行してますか?
について見直したところ、nobodyについては手当をしていなかったので、上記
(1)、(2)をnobodyについてやりました(Webmin経由ですが)。

 す、すると、無事にforwardからの起動でも無事postgreSQLへの接続ができま
した!!。test.phpで書いたpg_connectの処理だけではなく、pg_queryなども無
事動作しました。

 これで、ここ数日悩んでいたことが解決し、渡辺さんを始めご助言をいただい
た方に感謝申し上げます。ありがとうございました。

 ちなみに、最初の投稿で書いたように、私は
>  ・.forwardで送った場合、DBへのアクセス権限がないのかと思い、使用するデー
>   タベースで
>    GRANT ALL ON cxn03651 TO PUBLIC;
>   としてみても、駄目だった。
ということをやっていたのですが、今更ながらに思うに、このPUBLICというのは、
createuserで作ったDBユーザに対して権限を与えるもので、そもそもDBユーザで
はないnoboyに対しては無意味だったということだったのでしょう。勉強になり
ました。

 なお、小野さんの指摘にあったPGLIB、PGDATA、CLASSPATHといった環境変数の
問題ですが、これはphp.iniでpgsqlをextensionとして入れている場合には関係
ないということなのでしょうか。私の場合は結果的には関係なかったということ
だったようです。

 皆様、本当にありがとうございました。

                  中村(cxn03651 @ msj.biglobe.ne.jp)




PHP-users メーリングリストの案内