• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:OSXでcgi)

OSXでcgiを動かすための設定方法

このQ&Aのポイント
  • OSXでperlで作ったcgiを動かすための設定方法について調査しています。
  • 試した設定ではブラウザからアクセスするとForbiddenエラーが発生してしまいます。
  • 他にもOSXでcgiを動かすために必要な設定があるのか知りたいです。

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

  • ベストアンサー
  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.3

いちおやり方ですが、httpd.confの430行あたりの<Directory>の ところを書き換えます。 #<Directory /home/*/public_html>から始まるコメントアウトされた ひと固まりのところをコピーしてから作業すればよいでしょう。 以下はユーザディレクトリのSiteフォルダの中にcgi-binという フォルダを作成し、そこでCGI,SSIを実行可能にさせる例です。 <Directory /Users/*/Sites/cgi-bin>   AllowOverride All   Options Includes   Options ExecCGI </Directory> <Directory>のオプションについてはリンク先を参考にしてください。

参考URL:
http://www.zdnet.co.jp/help/tips/linux/l0340.html
Gaultier
質問者

お礼

422行目の <Directory /home/*/Sites/> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> をjakartaさんの言うとおりに書き換えてapacheを再起動したのですが 相変わらずエラーログに Options ExecCGI is off in this directory: /Users/*/Sites/cgi-bin/treebbs.cgi とでます(-"-;

Gaultier
質問者

補足

えぇっと、教えて頂いたHPを見ながら <Directory /home/*/Sites/> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch Includes ExecCGI <Limit GET POST OPTIONS PROPFIND> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS PROPFIND> Order deny,allow Deny from all </LimitExcept> </Directory> として、元の設定にExecCGIとSSI許可に設定しなおしても同じエラーが出てしまいます。

その他の回答 (2)

  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.2

>Options ExecCGI is off in this directory:/Users/****/Sites/bbs/bbs.cgi って、言う風に出てます(^^; これは単にユーザーディレクトリでCGIが有効になってないということです。 つまりForBiddenが出るのはユーザーディレクトリでCGIの実行が 許されてないということではないでしょうか。 <Directory></Directory>部分にUserDirectoryの設定を追加し ExecCGIと一文を足せばよいと思います。 Usersのディレクトリで動作を確認する前に /Library/WebServer/CGI-Executables 以下においてCGIが動く設定に なっているか確かめてみて下さい。 それとサンプルのCGIファイルはもちろん単なるテキストファイルなので catしただけでTerminalが止まるようならこのこと自体がそもそも おかしいと思われます。

Gaultier
質問者

お礼

cgi動きました!! httpd.confにばっかり気を取られてて/etc/httpd/users/*.confを書き換える事を見落としてました(^^;;; /etc/httpd/users/*.confを書き換えてやると今までの苦労が嘘のように快適にcgiが動いてます(^^;;;; 丁寧な説明ありがとうございました<(* _ _)>

  • jakarta
  • ベストアンサー率38% (607/1597)
回答No.1

AddHandler cgi-script .cgiはコメントを外し、単純に #!/usr/bin/perl print "hello"; というものをブラウザからチェックしてみましたがエラーがでますね。 %tail -f /var/log/httpd/error_log malformed header from script. Bad header=hello: /Library/WebServer/CGI-Executables/test.cgi サンプルをcatしてみたら # CGI programs must print their own HTTP response headers という記述があります。 そこで以下のように書き換えたらOKでした。 #!/usr/bin/perl print "Content-type: text/plain\n\n"; print "hello"; headerを返さずに出力するように変える事もできるは思うんですがちょっと すぐにお答えできません。

Gaultier
質問者

補足

えぇっと、私の方ではエラーログには Options ExecCGI is off in this directory:/Users/****/Sites/bbs/bbs.cgi って、言う風に出てます(^^; ついでに、 perl -cw bbs.cgi での文法チェックもしてみたのですが何処もおかしくないと出ます。 後、catすると虹色の円盤がずっと出てTerminalが止まっちゃうのでやってません(^^;;

関連するQ&A