- ベストアンサー
*.cgiがAccess forbidden
...public_html/helloworld.cgi ブラウザでアクセスすると Access forbidden! Error 403 です。 存在しない helloworld0.cgi にアクセスとしても同じです。 しかし、helloworld0.cgi0 だとObject not foundです。 このことから、*.cgiに対して規制がかかっているのが原因のようです。 どこを変更すればいいですか? public_htmlは755です。 ScriptAliasという変数は消しました。 <Directory /home/*/public_html>のOptionsの右に+ExecCGIを書きました。 そして、AddTypeとAddHandlerも、調べた情報で適当に書きました。 Apache2の再起動もしました。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こういう場合は、まずログを見て原因を調べるのがセオリーです。 /var/log/httpd のerror_logを確認してください。
その他の回答 (2)
- PCFREAK
- ベストアンサー率51% (417/805)
下記のURLを参考にデバックして下さい。
補足
ありがとうございます。 perlパスが間違っていました。 CGIできました。
- PCFREAK
- ベストアンサー率51% (417/805)
OPTIONSの指定が間違っているのではないですか? 普通、public_htmlには、MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExecなどの指定がなされていると思います。 ですので、同じ行にExecCGI(+なしで)を書けば良いです。 OPTIONSが2行になっているとか、httpd.confの設定が変になっているのでしょう。 ところで、cgiはcgi-binディレクトリに配置するのがセオリーですので、何を思ってScriptAliasを消したのか分かりませんが、あまり変な構成にしない方がいいですよ。(セキュリティ的にちょっとね。)
補足
現状を保ってExecCGIをONにしたかったので+ExecCGIにしました。 1行で書いています。 Options +ExecCGI MultiViews Indexes ... というふうです。 よく考えたら+と、+無しのものが混在するこのような指定はおかしいですね。 +無しにしました。 変化がありました。 The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: helloworld.cgi If you think this is a server error, please contact the webmaster. このように helloworld.cgi とファイル名が出るようになりました。 エラーログはPremature end of script headers:helloworld.cgi です。
補足
初めてログ見ました。 httpd.confに <Directory /home/*/public_html> Options +ExecCGI ... と書いてあるのに、ログには Options ExecCGI is off in this directory と書かれていました。 何か分かりますか?