はじめまして。
私は専門学校生でRedHat9でイントラネット構築の勉強をしている者です。
Apache2でWebサーバを立ち上げて、CGI掲示板が使用できるように作業を進めているのですが、
暗礁に乗り上げてしまい掲示板に投稿させて頂きました。
皆様、アドバイスを宜しくお願いいたします。
早速、トラブルで悩んでいる所ですが…
CGIからplファイルをrequireしようとするとError500になってしまいます。
しかし、plファイルの内容を直接CGIに記述するとエラーなく表示致します。
各パーミッションの設定は問題ないと思います。
また、CGIファイルの記述でPerlの位置は #!/usr/bin/perl と設定しております。
もう一点ですが、cgi-binにCGI(755)以外の物を入れると、Error403 Access forbiddenになってしまいます。
掲示板で使用するHTML(644)、LOG(666)などのファイルもエラーになってしまいます。
httpd.confのCGIディレクトリーの設定(587行付近)は以下のようになっております。
<Directory "/web/cgi-bin">
AllowOverride None
Options ExecCGI
AddHandler cgi-script .cgi .pl
</Directory>
現在の環境は以下のとおりです。
OS:RedHat9
Apacheバージョン:httpd-2.0.40-21
Apacheの位置:/etc/httpd
ドキュメントルート:/web
cgi-binの位置:/web/cgi-bin
補足になりますが、CGIファイル自体はWindows上で動作確認済みです。
また、CGI記述の文字コードはEUC、改行コードはLFとなっております。
宜しくお願いいたします。
こんにちは
テストしていないので外しているかもですが、
この現象について
>plファイルをrequireしようとするとError500
この行を2行にするとどうでしょう。
>AddHandler cgi-script .cgi .pl
↓
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
>もう一点ですが、cgi-binにCGI(755)以外の物を入れると、Error403 Access forbiddenになってしまいます。
これは想像がつきません。
エラーした場合はまずログをみる。
もちエラーログですよ。なんて書いてありますか。
こんばんは。
> CGIからplファイルをrequireしようとするとError500になってしまいます。
> しかし、plファイルの内容を直接CGIに記述するとエラーなく表示致します。
> 各パーミッションの設定は問題ないと思います。
> また、CGIファイルの記述でPerlの位置は #!/usr/bin/perl と設定しております。
>
> もう一点ですが、cgi-binにCGI(755)以外の物を入れると、Error403 Access forbiddenになってしまいます。
> 掲示板で使用するHTML(644)、LOG(666)などのファイルもエラーになってしまいます。
>
> httpd.confのCGIディレクトリーの設定(587行付近)は以下のようになっております。
>
> <Directory "/web/cgi-bin">
> AllowOverride None
> Options ExecCGI
> AddHandler cgi-script .cgi .pl
> </Directory>
まず、
ScriptAlias /cgi-bin/ "/web/cgi-bin/"
にしてますか?もしそうなら、/web/cgi-bin/配下のファイルは全てCGIとして処理されるので、
あえて、上記のような設定は不要で、下記のデフォルトのまま(Directryだけ変更)で動作するはずです。
<Directory "/web/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
但し、こうすると下記の問題がでますので、
http://www.aconus.com/~oyaji/faq/apache_cgi5.htm
症状からすると、このパターンのような気がします。eroor403なので少し違う可能性もありますが、
rpmのデフォルトでは、perl_moduleが使われるので現象が違うかもしれません。
/etc/httpd/conf.d/perl.confの
LoadModule perl_module ・・・
をコメントアウトすれば、普通のperlが使われるので、現象が変わる(error500)かもしれません。
こんにちは。皆様、お返事ありがとうございます。
皆様からのご意見を参考に、confファイルを修正したみたのですが…
結果変わらずでした。
エラーログには下記のようなメッセージがあります。
[Tue Nov 04 10:13:28 2003] [warn] child process 2813 still did not exit, sending a SIGTERM
[Tue Nov 04 10:13:28 2003] [notice] caught SIGTERM, shutting down
[Tue Nov 04 10:13:31 2003] [notice] Digest: generating secret for digest authentication ...
[Tue Nov 04 10:13:31 2003] [notice] Digest: done
[Tue Nov 04 10:13:32 2003] [notice] Apache/2.0.40 (Red Hat Linux) configured -- resuming normal operations
[Tue Nov 04 10:15:07 2003] [error] file permissions deny server execution/web/cgi-bin/bbs.html
[Tue Nov 04 10:15:19 2003] [error] file permissions deny server execution/web/cgi-bin/form.html
[Tue Nov 04 10:15:22 2003] [error] 2850: ModPerl::Registry: /web/cgi-bin/log.log not found or unable to stat
[Tue Nov 04 10:15:27 2003] [error] 2844: ModPerl::Registry: /web/cgi-bin/log.log not found or unable to stat
ディレクトリの設定は下記のように変更してみました。
<Directory "/web/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
AddHandler image/gif .gif
AddHandler image/jpeg .jpeg .jpg .jpe
AddHandler text/html .html .htm
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
</Directory>
おやじ様のFAQに載っていた、mime.typesの関係なのですが、このようなファイルは見当たりません。
これが存在しないのが原因なのでしょうか?
> /etc/httpd/conf.d/perl.confの
> LoadModule perl_module ・・・
> をコメントアウトすれば、普通のperlが使われるので、現象が変わる(error500)かもしれません。
コメントアウトしたところ、エラーでhttpdが起動しませんでした。
色々とご迷惑をお掛け致しますが、宜しくお願いいたします。
こんばんは。
まず、cgi-binで簡単なcgi(おやじのFAQにあるような)は、動いたのでしょうか?以下は、動いているという前提です。
> エラーログには下記のようなメッセージがあります。
>
> [Tue Nov 04 10:13:28 2003] [warn] child process 2813 still did not exit, sending a SIGTERM
> [Tue Nov 04 10:13:28 2003] [notice] caught SIGTERM, shutting down
> [Tue Nov 04 10:13:31 2003] [notice] Digest: generating secret for digest authentication ...
> [Tue Nov 04 10:13:31 2003] [notice] Digest: done
> [Tue Nov 04 10:13:32 2003] [notice] Apache/2.0.40 (Red Hat Linux) configured -- resuming normal operations
> [Tue Nov 04 10:15:07 2003] [error] file permissions deny server execution/web/cgi-bin/bbs.html
> [Tue Nov 04 10:15:19 2003] [error] file permissions deny server execution/web/cgi-bin/form.html
> [Tue Nov 04 10:15:22 2003] [error] 2850: ModPerl::Registry: /web/cgi-bin/log.log not found or unable to stat
> [Tue Nov 04 10:15:27 2003] [error] 2844: ModPerl::Registry: /web/cgi-bin/log.log not found or unable to stat
エラーが出ている(warn,noticeは無視していい)ので、それを参考にやっていけば解決するはずです。
最初の2つのエラーは、「file permissions deny」なので、xxx.htmlのパーミッションが「644」に
なっていないだけのように思いますが。後一つは、webにドキュメントルートを変更しているので、それぞれのフォルダの
パーミッションが正しいかですが?www/cgi-binとも「755」になっていますか?
次の2つは、「/web/cgi-bin/log.log not found or unable to stat」ですから、cgi-bin配下にlog.logが
ないかパーミションがまずいのだと思います。
ないなら、「echo -n > /web/cgibin/log.log」で作ってあげてください。パーミッションについては、
CGIの説明書に書いてありませんか?書いてないなら、「666」にしてみてください。
> ディレクトリの設定は下記のように変更してみました。
>
> <Directory "/web/cgi-bin">
> AllowOverride None
> Options None
> Order allow,deny
> Allow from all
> AddHandler image/gif .gif
> AddHandler image/jpeg .jpeg .jpg .jpe
> AddHandler text/html .html .htm
> AddHandler cgi-script .cgi
> AddHandler cgi-script .pl
> </Directory>
AddHandler cgi-scriptについては、serverコンフィグ(共通部分でデフォルトで.cgiだけ記述されてるところ)
で書かれていれば不要です。当然ですが、設定変更したらApacheを再起動してますよね。
> おやじ様のFAQに載っていた、mime.typesの関係なのですが、このようなファイルは見当たりません。
> これが存在しないのが原因なのでしょうか?
「場所は異なる場合あり」と書いてありますよね。おやじはソースから入れているので、RPMの場合は違います。
「locate mime.typs」で見つかるはずです。因みに、rpmなら「/etc」にあるはずです。
> > /etc/httpd/conf.d/perl.confの
> > LoadModule perl_module ・・・
> > をコメントアウトすれば、普通のperlが使われるので、現象が変わる(error500)かもしれません。
>
> コメントアウトしたところ、エラーでhttpdが起動しませんでした。
そんなバカなと思い、バックアップ機でやりましたが、デフォルトのままで/var/www/cgi-binでcgiは動くし、
perl_moduleをコメントアウトしてもなんともありません。
状況がわからなくなってきました。 confをいじりすぎて矛盾が出てきているのではないかと思えます。
こんばんは。お世話になります。
エラーログから各所を確認をしてみたのですが、やはりダメでした。
UserDirは正常に動作しているのですが、cgi-binのみ問題が解消できないようです。
おやじ様のおっしゃられる通り、confをいじりすぎて矛盾が出てきているのかも知れませんね…
一度、Apacheを再インストールしてみます。
必要最低限の設定変更だけで試験をし、再度ご報告させて頂きたいと思います。
また、お知恵をお貸し下さい。
ありがとうございました。