• ベストアンサー

ユーザー毎のディレクトリでCGIを設置

ユーザー毎のディレクトリでCGIを設置可能にしようとしているのですが、うまくいきません。 教えて下さい。 【環境】 Apache/2.0.40 Red Hat Linux 8.0 【httpd.confの設定抜粋】 DocumentRoot "/home/homepage/public_html" <Directory /home/homepage/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> #ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" 【.htaccessの設定】 AddHandler cgi-script .cgi Options +ExecCGI 以上のような設定で #!/usr/bin/perl print "Content-type: text/html\n\n"; print "hello"; こんなCGIをつくって実行してみました。 /home/homepage/public_html/cgi-bin/においたものはうまくいくのですが /home/user/public_html/cgi-bin/においたものはエラーになってしまいます。 エラーの内容は↓のとおりです。 Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: hello.cgi If you think this is a server error, please contact the webmaster Error 500 perlのパスは間違ってないし、パーミッションも755にしてあります。 どうすればいいのか分からず困っています。 どこを調べれみればいいのかだけでも教えていただけると助かります。 よろしくお願いします。

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

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

RedHatのhttpdはsuexecが有効にされていて、ユーザーディレクトリでは、public_html 直下でしかcgi が実行できません。 /usr/sbin/suexec のファイル名を変更すれば、public_html 以下の任意のディレクトリで cgi が実行できるようになります。

shi51
質問者

お礼

うごきました!! suexecファイルを別の名前に変更して、Apacheを再起動してみたところ無事に「hello」と表示されました。 そのとき「#!/usr/bin/perl/」を「#!/usr/bin/perl/ --」にしておくとうまくいきました。 本当にありがとうございました。

その他の回答 (2)

  • nota55
  • ベストアンサー率37% (138/366)
回答No.2

ありゃ,ダメでしたか。 んじゃ, 1.うまくいかない方のcgiファイルの改行コードを確認 →誤認識されるという話を聞いたことがあります。  LFで保存し直してみて下さい。 2.おまじないに手を加える →「#!/usr/bin/perl/」を「#!/usr/bin/perl/ --」に あたりはどうでしょ。 念のため, ・さっきコメントを外した部分はそのまま ・コメントを外した部分を再度コメントアウト の2パターンで試してみて下さい。

shi51
質問者

お礼

「#!/usr/bin/perl/」を「#!/usr/bin/perl/ --」に変更する方法はとても役に立ちました。 本当にありがとうございました。

shi51
質問者

補足

またまたありございます。 何度もすみません。 早速試してみました。 1.改行コードをLFで保存+先ほどの部分をコメント 2.改行コードをLFで保存+先ほどの部分をコメントアウト 3.「#!/usr/bin/perl/ --」+先ほどの部分をコメント 4.「#!/usr/bin/perl/ --」+先ほどの部分をコメントアウト ↑の4種類を試してみましたが、まだダメみたいです。 すいません。

  • nota55
  • ベストアンサー率37% (138/366)
回答No.1

#ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" ここがコメントアウトされているからでは? コメントアウトされてると user/public_html/cgi-bin/ が /home/homepage/public_html/cgi-bin/に マッピングされないような気が。

shi51
質問者

補足

早速の回答ありがとうございます。 ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" コメントアウトしてみましたが同じエラーのままでした。

関連するQ&A