- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CGI でDBI->connectするとエラー発生)
CGIでDBI->connectするとエラー発生
このQ&Aのポイント
- CGIでORACLEに接続しようとしたところ、Internal Server Errorが発生しており困っています。APACHEでCGIを実行した時だけエラーが発生し、コマンドライン上で実行するとエラーは発生しません。
- エラーメッセージには、'/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/DBD/Oracle/Oracle.so'が見つからないという内容が表示されています。また、試した対策として、環境変数の定義確認、ld.so.confへの追記、httpd.confへの環境変数のセットなどを行いましたが、問題は解決していません。
- 現在、どこが悪くて動かないのか、原因として考えられること、対処すべきことについてわからない状況です。試すべきことや追加情報などがあればお知らせください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>APACHEでCGIを実行した時だけ >コマンドライン上で実行するとエラーは発生しない この症状だと、apache (httpd) にアクセス権がない、という可能性あり。 usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi/auto/ 以下のディレクトリ、ファイルの permission を調べて見ては。 あと、コマンドラインで which perl した結果が、CGI で呼んでいる perl と同じものかどうかも、一応チェックするのが吉です。
お礼
ご回答、有難うございます。 以下の対応をする事により、解決しました。 ・apacheのエラーメッセージにあるファイルのパーミッションをゆるめる(今回はlibnnz10.soだった) ・環境変数でアクセスするディレクトリのパーミッションをゆるくする ・apacheでcgiを実行する時のユーザー(nobody)のセカンドグループにoinstall($ORACLE_HOMEを持つグループ)を追加する ・httpd.confの最下行に必要な環境変数を全てセットし、apacheを再起動する 以上、解決しましたので終了とさせて頂きます。