• ベストアンサー

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

  • elngr
  • お礼率25% (22/86)

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

  • ベストアンサー
  • 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

  • 403forbiddenがなおりません。

    以下はMacintosh板で聞いたものなんですが、あまり回答が得られないのでこちらでも書かせてください。 先日こちらのMacintosh掲示板にて、Macintosh OSXでPHPファイルが動かないといった質問をしたものです。 ?http://oshiete1.goo.ne.jp/qa2719598.html? それで解決後に自分が今公開しているサイトを見に行ったら、今まで見えていたCGIのページが突然you don't have permission to access 403 forbiddenになってしまいました。 それで、何度もターミナルでchmod 705 /Users/*/Sites/****.cgi とパーミッションの設定をしてもテストファイルすら見れなくなって しまいました。 <Directory /Users/*/Sites/cgi-bin> AllowOverride FileInfo AuthConfig Limit Options +ExecCGI AddHandler cgi-script .cgi </Directory> としていたのを、 <Directory /Users/*/Sites> AddType text/html shtml AddHandler server-parsed shtml AddHandler cgi-script cgi Options Indexes MultiViews ExecCGI Includes AllowOverride None Order allow,deny Allow from all </Directory> としただけなのですが、何が問題だったのでしょうか、、、、、。 誰か助けてください。よろしくお願いいたします。

    • 締切済み
    • CGI
  • cgi-binにアクセスするとforbiddenになってします。

    apache2.0.63をインストールし設定してもhttp://localhost/cgi-bin/ にアクセスするとforbidden、localhost/cgi-bin/index.cgiに アクセスするとInternet Sever Errorと出てしまいます。 環境はwindowsvistaでcgi-binフォルダのパーミッションもプロパティ でアクセス許可をフルコントロールにしたので問題ないと思います。 httpd.confはhttp://win.kororo.jp/archi/www/apache_fast.phpの 上から「CGI・SSIを使えるようにする」の 「AddHandler cgi-script .cgi //先頭の#を取り除く」までをそのまま真似しました。 それプラスDocumentRoot "パス"の下の<Directory "C:/apache2/htdocs">のパスをDocumentRootと同じパスに設定しました。 それとhttp://blog.goo.ne.jp/xmldtp/e/50e19ae5e407dcf822f40b472e4295e8 もすべて確認しましたが問題なかったです。 もし他に足りないことがあったら教えてください。 ちなみにapache2.0.63はリリースが1月20日とサイトに書いてあったのですが修正されて中身が変わってることもあるのでしょうか。 前は上記の設定だけで出来たのですが・・・

    • ベストアンサー
    • CGI
  • OSXでcgi

    OSXでperlで作ったcgiを動かしたいと思い色々といじってるのですが全く動きません。 apacheのhttpd.confの設定で AccessFileName .htaccess AddHandler cgi-script .cgi AddHandler cgi-script .pl についてはコメントをはずして使えるようにして Perlのパスも#!/usr/bin/perlとしてsiteフォルダとcgiを置いてるディレクトリに.htaccessを下のように記述して作り AddType application/x-httpd-cgi .cgi AddType application/x-httpd-cgi .cgi/ パーミッション設定をちゃんとしてあげてるのですがブラウザからアクセスするとForBiddenとでてしっかりと設定してるはずのパーミッション設定が間違ってますと言われてしまいます。 OSXでcgiを動かすには他にももっと色々と設定しなければダメなんでしょうか?

    • ベストアンサー
    • Mac
  • apacheのScriptAliasの記述について

    どなたか,ご教授いただければ幸いです。 WindowsXp Proでapacheを動かしています。次の設定で,cgiはうまく動作していました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> --- これに, http://www.miloweb.net/win/server/apache.html を参考にして,各ユーザーフォルダでcgiが実行できるようにしようと,次のようにしました。 --- <IfModule alias_module> ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" </IfModule> <Directory \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpg </Directory> <IfModule mod_userdir.c> UserDir \"C:/www/users/*/\" </IfModule> <Directory \"C:/www/users/*/cgi/\"> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jp </Directory> --- その結果, http://localhost/~user/ としてuserのホームページにアクセスできるようになったのですが, cgiについては, http://localhost/~user/cgi/・・・ としてもアクセスできません。どなたか原因をご教授いただけないでしょうか。 ScriptAlias /cgi-bin/ \"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\" ScriptAlias /cgi/ \"C:/www/users/*/cgi/\" の行を入れ替えると,\"C:/Program Files/Apache Software Foundation/Apache2.2/cgi-bin/\"においてあるcgiが実行できなくなります。ScriptAliasは1行目しか有効でないようにも見えるのですが,上に書いた参考URLではできているようなので,戸惑っています。

  • CGIと permissionの問題

    win2000のos上で,ApacheでCGIをローカルで試していますが, 下記のようなerrが出ます。 Forbidden You don't have permission to access /namazu.cgi on this server. --------------------------------------------------------------------------------Apache/1.3.19 Server at 127.0.0.1 Port 80 logを見ると,下記です。 [Sun Sep 16 17:22:04 2001] [error] [client 127.0.0.1] Options ExecCGI is off in this directory: c:/~nakai/namazu.cgi このdirの .htaccess は下記です。 AllowOverride Options Options +ExecCGI 一方,Apache の httpd.conf  #ScriptAlias /cgi-bin/ "C:/Program Files/Apache Group/Apache/cgi-bin/" ScriptAlias /cgi-bin/ "C:/~nakai/cgi-bin/" # # "C:/Program Files/Apache Group/Apache/cgi-bin" should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # #<Directory "C:/Program Files/Apache Group/Apache/cgi-bin"> <Directory "C:/~nakai/cgi-bin/"> AllowOverride None Options None # Options ExecCGI Order allow,deny Allow from all SetHandler cgi-script </Directory> どのあたりに問題点かあるのでしょうか?

  • CGI

    MacOS10.10のApache2でCGIが動きません。 httpd.confの最後にこう記述してます。 <VirtualHost *:80> DocumentRoot "/Users/ユーザー/Sites/www" ServerName ドメイン <Directory /Users/ユーザー/Sites/www> AllowOverride All Options Indexes MultiViews ExecCGI FollowSymLinks AddType application/x-httpd-cgi .cgi .pl AddHandler cgi-script .pl .cgi DirectoryIndex index.html index.htm index.cgi </Directory> </VirtualHost> 記述は合ってると思うんですが……どこが間違ってるのでしょう?

    • ベストアンサー
    • Mac
  • CGIのアクセス制限について

    環境は windowsXPHome SP3 / Apache2.2 / ActivePerl5 / (MySQLを使う予定) です。 htdocs\index.html htdocs\ddd\aaa.cgi htdocs\ddd\bbb.cgi のようなディレクトリ構成で、httpd.confは、htdocs以下を公開する設定になっていて <Directory "D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\ddd"> AddHandler cgi-script .cgi Options +ExecCGI </Directory> を指定しました。 これを自宅サーバーとして公開する場合、外部からはindex.htmlにアクセスできるようにして、 aaa.cgiやbbb.cgiはindex.htmlからリンクやformのactionから呼び出されてからしか実行できない (直接cgiのurlを指定して開けない)ようにするにはどうすればいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIフォルダ内でhtmlが見れません。。

    はじめまして。 ウェブサーバー(Vine Linux2.6 r4 , Apache1.3) を使用しています。 cgiフォルダをcgi-bin として、.cgi .pl の拡張子の ものは実行できるのですが、.html は forbidden 403 権限がありませんとしてエラーが出ます。 cgi ディレクトリの設定をこのようにしていますが、 <Directory /home/httpd/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpeg .jpg .jpe AddHandler image/png .png AddHandler text/html .html .htm ←これでいけると思ってました。 </Directory> うまくいきません。 htmlファイルの属性は644になってます。 これを755とかに変更すると今度はinternal server error となってしまいます。 何が悪いのか おわかりになるかたご回答いただけますでしょうか。 よろしくお願いします。

  • apacheのCGI設定

     pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには public_html / index.html (トップページ) | +-- bbs / light.cgi [755] | admin.cgi [755] ・・・・(省略) +-- lock [777] / | +-- past [777] / 0001.cgi [666] とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて /usr/local/www/cgi-binにbbsというフォルダをつくり あとは上のようにしています。またindex.htmlは/usr/local/www/dataのなかにいれて表示してWebサーバーとしてはたらいています。またapacheの/usr/local/etc/apacheのhttpd.confは 関係ありそうな行だけあげると ServerRoot "/usr/local" DocumentRoot "/usr/local/www/cgi-bin" <Directory "/usr/local/www/cgi-bin/bbs"> Options Indexes FollowSymLinks MultiViews <location "/cgi-bin/"> Options ExecCGI AllowOverride AuthConfig Limit Order allow ,deny Allow from all </Location> <IfModule mod_mime.c> TypesConfig /usr/local/etc/apache/mime.types ADDHandler cgi-script .cgi </IfModule> ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" <Directory "/usr/local/www/cgi-bin/bbs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi どこがおかしいのかおしえていただけないでしょうか?

    • ベストアンサー
    • CGI
  • Fedora Core1サーバーでCGIが利用できません

    Fedora Core1でwebサーバーを立てたのですが、実行しようとすると「500 Internal Server Error」となってCGIが動きません。 perlへのパスやパーミッションの設定も見直しましたが、どこの設定が間違っているか分からないので、設定方法を教えてもらえないでしょうか? 現在の環境は ホスト名:saba.dyndns.org perlのパス:/usr/local/bin/perl CGIを仕えるようにしたいユーザー:guest CGIを設置するディレクトリ:/home/guest/cgi-bin/ Apacheのバージョンは2.0.49 となっています。 また以下はhttpd.confの抜粋です。 Listen *:80 #ScriptAlias /cgi-bin/ "/var/www/html/" ScriptAlias /cgi-bin/ "/home/guest/public_html/cgi-bin/" AddHandler cgi-script .cgi .pl <Directory "/home/guest/public_html/"> Options ExecCGI AllowOverride None Allow from all Order allow,deny </Directory> <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options Includes ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 長文失礼しました。