現在レッドハット9Apache2とperl5を利用しています。
なんといっていいのか説明しづらいのですが、うまくcgi動かないのです。
他のサーバーで動くものが上記の自サーバーでcgiスクリプトを動かそうとするとロックエラーがでたりして動きません。
私が思うにmod-perlが使用されているから上手く動かないのではと思っていますが。mod-perlを使用しない方法がわかりません。以下に現在の設定内容を張り付けます。
まず、perl.conf
LoadModule perl_module modules/mod_perl.so
Alias /cgi-bin /var/www/cgi-bin
<Directory /var/www/cgi-bin>
SetHandler perl-script
PerlHandler ModPerl::PerlRun::handler
PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
次にhttpd.confです。検索でcgiと出るものを張り付けます。
LoadModule cgi_module modules/mod_cgi.so
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
<IfModule mod_cgid.c>
</IfModule>
AddHandler cgi-script .cgi
<Directory "/var/www/cgi-bin">
Options ExecCGI
AllowOverride None
Allow from from all
Order allow,deny
</Directory>
ここで不思議に思うのが、AddHandler cgi-script .cgiの場所でこの設定でもtest.plを読むことです。
私のこのサーバーでは配布されているどのcgiでもうまく動きません。
一般的な設定にするにはどうすればいいのでしょうか。
レンタルされているサーバーにはちょっと修正するだけで動くのに。。。
セキュリティのことを意識しているのだと思いますが。mod-perlを使用せずに普通に動くならそうしたいと思います。皆さんはどうやって設定しているのでしょうか。
お助け下さい。よろしくお願い致します。
httpd.conf設定のつけたしです。
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>
mod_perlをアンインストールしたらCGIが動かなくなってしまいました…(+_+)
> 現在レッドハット9Apache2とperl5を利用しています。
> なんといっていいのか説明しづらいのですが、うまくcgi動かないのです。
> 他のサーバーで動くものが上記の自サーバーでcgiスクリプトを動かそうとするとロックエラーがでたりして動きません。
> 私が思うにmod-perlが使用されているから上手く動かないのではと思っていますが。mod-perlを使用しない方法がわかりません。以下に現在の設定内容を張り付けます。
> まず、perl.conf
> LoadModule perl_module modules/mod_perl.so
LoadModuleとは何をするものでしょうか?
そう考えれば、アンインストールではなく、これをコメントアウトすればOKかな?
と気がつくはずです。マニュアルをよく見ましょう。
後は、トップページからFAQを参考にしてください。
以下の設定をしたらCGIがそのまま表示される症状。つまり動かないです。
まずperl.conf
#LoadModule perl_module modules/mod_perl.so
Alias /cgi-bin /var/www/cgi-bin
<Directory /var/www/cgi-bin>
SetHandler perl-script
# PerlHandler ModPerl::PerlRun::handler
# PerlOptions +ParseHeaders
Options +ExecCGI
</Directory>
#LoadModule perl_module modules/mod_perl.so
だけだとエラーで再起動がでますので。Directoryの部分2行コメントします。
httpd.confはFAQにあったとおりにしました。
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
>LoadModuleとは何をするものでしょうか?
は私もわかりません。
httpd.confでの設定でcgiを動かすのも調べてみたのですが、前に書いた設定で動かないようです。
何かお気づきの点はありますでしょうか。。
> 以下の設定をしたらCGIがそのまま表示される症状。つまり動かないです。
> まずperl.conf
> #LoadModule perl_module modules/mod_perl.so
>
> Alias /cgi-bin /var/www/cgi-bin
> <Directory /var/www/cgi-bin>
> SetHandler perl-script
> # PerlHandler ModPerl::PerlRun::handler
> # PerlOptions +ParseHeaders
> Options +ExecCGI
> </Directory>
> #LoadModule perl_module modules/mod_perl.so
> だけだとエラーで再起動がでますので。Directoryの部分2行コメントします。
>
> httpd.confはFAQにあったとおりにしました。
> AddHandler cgi-script .cgi
> AddHandler cgi-script .pl
>
> >LoadModuleとは何をするものでしょうか?
> は私もわかりません。
理解してくださいという意味で書いたのですが・・・。
> httpd.confでの設定でcgiを動かすのも調べてみたのですが、前に書いた設定で動かないようです。
perl.conf内を全てコメントアウトしてください。これで、perlで動作するはずです。
> perl.conf内を全てコメントアウトしてください。これで、perlで動作するはずです。
全てコメントアウトしてみたところ。次のエラーが出ました。
Premature end of script headers
ブラウザからみるとInternal Server Error500になりました。
回避する方法でCGIスクリプトに
#!/usr/local/bin/cgi
の後に 「--」を追加する方法があってこれをやってみても結果は同じでした。
httpd.confの設定が原因でしょうか?
スクリプトが悪いのでしょうか。
一応以下で実験しているのですが。perl.confをコメントアウトしていない状態では動作していました。
#!usr/bin/perl
print "content-type: text/html\r\n\r\n";
print "hellow,world.";
httpd.confの設定は書籍やHPを参考にしているのですが。
すいませんがまたお気づきの点がありましたらよろしくお願い致します。
大丈夫でした。
ちょっとスクリプトにケアレスミスがあったので無事修正して直りました!
ありがとうございましたm(__)m