電子書籍の厳選無料作品が豊富!

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を動かすには他にももっと色々と設定しなければダメなんでしょうか?

A 回答 (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

この回答への補足

えぇっと、教えて頂いた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許可に設定しなおしても同じエラーが出てしまいます。

補足日時:2002/06/19 20:33
    • good
    • 0
この回答へのお礼

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
とでます(-"-;

お礼日時:2002/06/19 20:27

>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が止まるようならこのこと自体がそもそも
おかしいと思われます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/06/19 22:52

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が止まっちゃうのでやってません(^^;;

補足日時:2002/06/19 01:18
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!