解決済み

OSXでcgi

  • 困ってます
  • 質問No.295038
  • 閲覧数121
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 59% (35/59)

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

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

  • 回答No.3

ベストアンサー率 38% (607/1597)

いちおやり方ですが、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>のオプションについてはリンク先を参考にしてください。
補足コメント
Gaultier

お礼率 59% (35/59)

えぇっと、教えて頂いた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:18
お礼コメント
Gaultier

お礼率 59% (35/59)

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:31
4つの行動でOK-チップをためよう

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 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が止まるようならこのこと自体がそもそも
おかしいと思われます。
お礼コメント
Gaultier

お礼率 59% (35/59)

cgi動きました!!
httpd.confにばっかり気を取られてて/etc/httpd/users/*.confを書き換える事を見落としてました(^^;;;
/etc/httpd/users/*.confを書き換えてやると今までの苦労が嘘のように快適にcgiが動いてます(^^;;;;
丁寧な説明ありがとうございました<(* _ _)>
投稿日時 - 2002-06-19 22:52:50
  • 回答No.1

ベストアンサー率 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を返さずに出力するように変える事もできるは思うんですがちょっと
すぐにお答えできません。
補足コメント
Gaultier

お礼率 59% (35/59)

えぇっと、私の方ではエラーログには
Options ExecCGI is off in this directory:/Users/****/Sites/bbs/bbs.cgi
って、言う風に出てます(^^;

ついでに、
perl -cw bbs.cgi
での文法チェックもしてみたのですが何処もおかしくないと出ます。

後、catすると虹色の円盤がずっと出てTerminalが止まっちゃうのでやってません(^^;;
投稿日時 - 2002-06-19 01:18:16
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ