- ベストアンサー
OSXでcgiを動かすための設定方法
- OSXでperlで作ったcgiを動かすための設定方法について調査しています。
- 試した設定ではブラウザからアクセスするとForbiddenエラーが発生してしまいます。
- 他にもOSXでcgiを動かすために必要な設定があるのか知りたいです。
- みんなの回答 (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>のオプションについてはリンク先を参考にしてください。
その他の回答 (2)
- jakarta
- ベストアンサー率38% (607/1597)
>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が止まるようならこのこと自体がそもそも おかしいと思われます。
お礼
cgi動きました!! httpd.confにばっかり気を取られてて/etc/httpd/users/*.confを書き換える事を見落としてました(^^;;; /etc/httpd/users/*.confを書き換えてやると今までの苦労が嘘のように快適にcgiが動いてます(^^;;;; 丁寧な説明ありがとうございました<(* _ _)>
- jakarta
- ベストアンサー率38% (607/1597)
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を返さずに出力するように変える事もできるは思うんですがちょっと すぐにお答えできません。
補足
えぇっと、私の方ではエラーログには Options ExecCGI is off in this directory:/Users/****/Sites/bbs/bbs.cgi って、言う風に出てます(^^; ついでに、 perl -cw bbs.cgi での文法チェックもしてみたのですが何処もおかしくないと出ます。 後、catすると虹色の円盤がずっと出てTerminalが止まっちゃうのでやってません(^^;;
お礼
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 とでます(-"-;
補足
えぇっと、教えて頂いた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許可に設定しなおしても同じエラーが出てしまいます。