POSTGRES_HOME は mkdir で作ろう

またも、libpq.so.5 がらみのエラーで小一時間悩む・・・

実は、これで三回目である。
この問題で時間を無駄にしたのは・・・

シェル上での実行(ちなみに、root ユーザにて)ではまったく問題無いのに、CGI で実行すると、

install_driver(Pg) failed: Can't load '/usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/auto/DBD/Pg/Pg.so' for module DBD::Pg: libpq.so.5: cannot open shared object file: No such file or directory at /usr/lib/perl5/5.8.8/i386-linux-thread-multi/DynaLoader.pm line 230, <DATA> line 855.
 at (eval 9) line 3
Compilation failed in require at (eval 9) line 3, <DATA> line 855.
Perhaps a required shared library or dll isn't installed where expected
 at ../hogehoge.cgi line 99

というエラーが出る。

結論から言おう。
これは、「POSTGRES_HOME のパーミッション」の問題(^^;

/usr/local/pgsql ディレクトリが 0700(所有者以外、参照すら不可)で作られているので、Apache の実行ユーザである daemon から libpq.so.5(/usr/local/pgsql/lib)の参照が出来ないために No such file or directory となっている。

つーことで、/usr/local/pgsql ディレクトリのパーミッションを 0755 に変更すれば解決。

以前(特に FreeBSD サーバメインだった頃)は、mkdir /usr/local/pgsql してから、vipw や vi /etc/group で直接ユーザー&グループの作成を行っていたので、POSTGRES_HOME(/usr/local/pgsql)が 0700 で作られることはなかったんだが、最近は手っ取り早く、

# groupadd -g 128 postgres
# useradd -g postgres -u 128 -c 'POSTGRES Admin' -d /usr/local/pgsql -m -s /bin/bash postgres

ってやっちゃうからな。これだと、/usr/local/pgsql が 0700 で作られちゃう。

ググっても、「httpd.conf で mod_env が有効になっているのを確認して SetEnv LD_LIBRARY_PATH /usr/local/pgsql/lib という記述を追加しよう」とか、「ldconfig してないんじゃないか?」的な情報が多いんだけど、俺がそんなミスするかよ!!

・・・って、俺のミスの方がよっぽど格好悪いけどな(^^; とほほほ・・・

トラックバック(0)

このブログ記事を参照しているブログ一覧: POSTGRES_HOME は mkdir で作ろう

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/2171

コメントする

このブログ記事について

このページは、shinodaが2012年8月24日 15:52に書いたブログ記事です。

ひとつ前のブログ記事は「高森高校「八〇年のあゆみ」という冊子を買ったのだが」です。

次のブログ記事は「Flex/AIR アプリの印刷が異常な汚さでどうしようかと思ったけど・・・」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら