• ベストアンサー

*.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の再起動もしました。

質問者が選んだベストアンサー

  • ベストアンサー
  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

こういう場合は、まずログを見て原因を調べるのがセオリーです。 /var/log/httpd のerror_logを確認してください。

elngr
質問者

補足

初めてログ見ました。 httpd.confに <Directory /home/*/public_html> Options +ExecCGI ... と書いてあるのに、ログには Options ExecCGI is off in this directory と書かれていました。 何か分かりますか?

その他の回答 (2)

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.3

下記のURLを参考にデバックして下さい。

参考URL:
http://sagittarius.dip.jp/~toshi/premature.html
elngr
質問者

補足

ありがとうございます。 perlパスが間違っていました。 CGIできました。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.2

OPTIONSの指定が間違っているのではないですか? 普通、public_htmlには、MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExecなどの指定がなされていると思います。 ですので、同じ行にExecCGI(+なしで)を書けば良いです。 OPTIONSが2行になっているとか、httpd.confの設定が変になっているのでしょう。 ところで、cgiはcgi-binディレクトリに配置するのがセオリーですので、何を思ってScriptAliasを消したのか分かりませんが、あまり変な構成にしない方がいいですよ。(セキュリティ的にちょっとね。)

elngr
質問者

補足

現状を保って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 です。

関連するQ&A