Top過去ログ目次掲示板

作成日:2003年10月31日 作成:おやじ
掲示板で過去に質問された内容です。

No.1841 CGIについて[質問]


No.1841 投稿時間:2003年10月31日(Fri) 10:30 投稿者名:佐藤 URL:
タイトル:CGIについて[質問]

はじめまして。
私は専門学校生で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となっております。


宜しくお願いいたします。


No.1843 投稿時間:2003年10月31日(Fri) 12:45 投稿者名:H.T URL:
タイトル:Re: CGIについて[質問]

こんにちは
テストしていないので外しているかもですが、

この現象について
>plファイルをrequireしようとするとError500

この行を2行にするとどうでしょう。
>AddHandler cgi-script .cgi .pl
      ↓
AddHandler cgi-script .cgi
AddHandler cgi-script .pl


>もう一点ですが、cgi-binにCGI(755)以外の物を入れると、Error403 Access forbiddenになってしまいます。

これは想像がつきません。


No.1844 投稿時間:2003年10月31日(Fri) 18:10 投稿者名:OAK URL:http://kkk.nu/
タイトル:ログは?

エラーした場合はまずログをみる。
もちエラーログですよ。なんて書いてありますか。


No.1845 投稿時間:2003年10月31日(Fri) 19:14 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/
タイトル:ScriptAliasの設定は?

こんばんは。

> 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)かもしれません。


No.1870 投稿時間:2003年11月04日(Tue) 10:54 投稿者名:佐藤 URL:
タイトル:ありがとうございます

こんにちは。皆様、お返事ありがとうございます。

皆様からのご意見を参考に、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が起動しませんでした。


色々とご迷惑をお掛け致しますが、宜しくお願いいたします。


No.1880 投稿時間:2003年11月04日(Tue) 21:17 投稿者名:おやじ URL:http://www.aconus.com/~oyaji/
タイトル:デフォルトに一回戻したほうがいいかもしれません。

こんばんは。

 まず、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をいじりすぎて矛盾が出てきているのではないかと思えます。


No.1883 投稿時間:2003年11月05日(Wed) 20:16 投稿者名:佐藤 URL:
タイトル:デフォルトに戻してみます

こんばんは。お世話になります。

エラーログから各所を確認をしてみたのですが、やはりダメでした。
UserDirは正常に動作しているのですが、cgi-binのみ問題が解消できないようです。

おやじ様のおっしゃられる通り、confをいじりすぎて矛盾が出てきているのかも知れませんね…
一度、Apacheを再インストールしてみます。
必要最低限の設定変更だけで試験をし、再度ご報告させて頂きたいと思います。

また、お知恵をお貸し下さい。
ありがとうございました。



掲示板▲頁先頭