電気ウナギ的○○

About Home

POSTGRES_HOME は mkdir で作ろう

shinoda (2012年8月24日 15:52)
またも、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 してないんじゃないか?」的な情報が多いんだけど、俺がそんなミスするかよ!!

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

電気ウナギ的○○

電気ウナギ的○○

About Back

コメント(0)

電気ウナギ的○○

電気ウナギ的○○

About Back

トラックバック(0)

トラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/2171

電気ウナギ的○○

About This Site

電気ウナギ的○○
岩国在住。広島で働く超零細IT企業社長のいわゆる社長日記。
何か、酒と食い物のことばかり書いているようで・・・お察しのとおり、肥満体です:-)


2011/06/24
iPhone用サイト公開

Create with jQuery, jQTouch.


CLOSE