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