- ベストアンサー
ユーザー毎のディレクトリで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にしてあります。 どうすればいいのか分からず困っています。 どこを調べれみればいいのかだけでも教えていただけると助かります。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
RedHatのhttpdはsuexecが有効にされていて、ユーザーディレクトリでは、public_html 直下でしかcgi が実行できません。 /usr/sbin/suexec のファイル名を変更すれば、public_html 以下の任意のディレクトリで cgi が実行できるようになります。
その他の回答 (2)
- nota55
- ベストアンサー率37% (138/366)
ありゃ,ダメでしたか。 んじゃ, 1.うまくいかない方のcgiファイルの改行コードを確認 →誤認識されるという話を聞いたことがあります。 LFで保存し直してみて下さい。 2.おまじないに手を加える →「#!/usr/bin/perl/」を「#!/usr/bin/perl/ --」に あたりはどうでしょ。 念のため, ・さっきコメントを外した部分はそのまま ・コメントを外した部分を再度コメントアウト の2パターンで試してみて下さい。
お礼
「#!/usr/bin/perl/」を「#!/usr/bin/perl/ --」に変更する方法はとても役に立ちました。 本当にありがとうございました。
補足
またまたありございます。 何度もすみません。 早速試してみました。 1.改行コードをLFで保存+先ほどの部分をコメント 2.改行コードをLFで保存+先ほどの部分をコメントアウト 3.「#!/usr/bin/perl/ --」+先ほどの部分をコメント 4.「#!/usr/bin/perl/ --」+先ほどの部分をコメントアウト ↑の4種類を試してみましたが、まだダメみたいです。 すいません。
- nota55
- ベストアンサー率37% (138/366)
#ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" ここがコメントアウトされているからでは? コメントアウトされてると user/public_html/cgi-bin/ が /home/homepage/public_html/cgi-bin/に マッピングされないような気が。
補足
早速の回答ありがとうございます。 ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" コメントアウトしてみましたが同じエラーのままでした。
お礼
うごきました!! suexecファイルを別の名前に変更して、Apacheを再起動してみたところ無事に「hello」と表示されました。 そのとき「#!/usr/bin/perl/」を「#!/usr/bin/perl/ --」にしておくとうまくいきました。 本当にありがとうございました。