![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。
/var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。
***** 以下 httpd.confの抜粋です。*****
#UserDir disable
UserDir public_html
<Directory /home/*/public_html>
AllowOverride All
Options Includes ExecCGI FollowSymLinks
SetHandler cgi-script
</Directory>
AddHandler cgi-script .cgi .pl
**************************************
サーバーのエラーログを見ると
Premature end of script headers: test.cgi
となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。
ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
たとえば ユーザー tarou でディレクトリが/home/tarou/public_htmlなら
root権限で
# chown tarou:tarou /home/tarou/public_html/*.cgi
として .cgiファイルの所有者を、そのユーザーディレクトリに合わせてください。
#1さんの書かれたようにsuexecが原因だと思いますが
そのままコピーしたのならfileの所有者が問題になります。
その他にはsuexecの場合、、、
## .cgiフアイルのパーミッションは 700 でOKです。
755や705でも動きますが777や707ではエラーになります
## .cgiを置くディレクトリのパーミッションは 701で OK
755や、、以下同上
### 要するにsuexecの場合
1. cgiの所有者がユーザーディレクトリと一致しないと駄目
2. cgiやそのディレクトリに他の人が書き込み権限があると駄目
3. 今回は該当しませんが ユーザーのドキュメントディレクトリを勝手にpublic_html以外にしてもエラーになります
(↑設定変更してApacheのコンパイルしなおさない限りは)
この回答への補足
ご指摘ありがとうございます。
別な急ぎの仕事が入ってしまって、試してみる時間が取れなくなってしまいました。
判りやすく指摘していただいて、感謝いたします。
ただ、上記のような状況ですので、結果はしばらくお待ち下さい。
No.5
- 回答日時:
しつこいですが、更に付けたし
最初の質問である .cgiにアクセスして500errorになる件と
SetHandler cgi-script によって普通の.htmlでエラーになる件は別の原因かと思います
.cgiにアクセスしてエラーになる原因が #2にて書いたような事であれば
logs/suexec.logに 原因が記録されているはずです。
バージョンによって多少の文言は違いますが
・ .cgiファイルの所有者とディレクトリが違う場合
target uid/gid (***/***) mismatch with directory (***/***) or program (0/0)
・ ディレクトリや.cgiに他者の書き込み権限がある場合
file is writable by others: (/home/tarou/public_html/test1/hoge.cgi)
・ コンパイルし直しせずにpublic_html 以外をユーザードキュメントディレクトリにした場合
cannot get docroot information
##そうじゃなくて .htaccessの記述に問題がある場合は
.htmlのと .cgiのエラーの原因は同じですが、
その場合は logs/error_log に .htaccess に問題がある旨、記録されます
例えば、有効な .htaccesに test と記述すると test という構文は有りませんので
中略/.htaccess: Invalid command 'test', perhaps mis-spelled
などと成ります。
また文法的には問題なくてもAllowOverrideで許可されていない記述をするとエラーになりますが
質問者さんの場合は AllowOverride All と全許可してますので、こちらの可能性は低いですね
umasikajiro 様、遅くなって申し訳ありません。
ご指摘のように所有者等の条件をそろえて、SetHandler cgi-script
の行を削除したら、うまく動作するようになりました。
少しだけApacheの理解が深まりました。今後も精進いたします。
理解しやすいご指摘と回答に感謝いたします。
本当にありがとうございました。
No.4
- 回答日時:
見落としてました、、、
>SetHandler cgi-script
これを記述しちゃうと、該当ディレクトリ中のfileは .txt や .gifだろうと .htm だろうとCGIとして扱われます
ですので中身が普通のHTMLのままの .htmlファイルにアクセスすれば当然500errorになります
No.1
- 回答日時:
suEXEC機能でそのユーザーの権限で実行しているのが原因だと思います。
suEXECを無効にして動作するなら間違いないと思いますので、
以下の行があればコメントアウトして確認してみてはどうでしょう?
LoadModule suexec_module modules/mod_suexec.so
早速ありがとうございます!。
教えて頂いた箇所をコメントアウトして、httpd restart してやってみたんですが、うまくいきませんでした。同じ結果です。
suEXEC機能について知らないので、今から調べてみます。
今更で申し訳ないんですが、なんと、CGI じゃない HTML のドキュメントも同じ Internal Server Error がでます。
何か根本的なところが間違っているんでしょうか?
もう少し悪あがきしてみます。もし、初心者が陥りやすい事等、気がついた事がありましたら、ご指摘いただけたらありがたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- CGI 一番簡単なCGI,掲示板の設置教えてください 4 2023/08/22 10:47
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- その他(ブログ) ランキングサイトのポイントが発生しない理由 1 2023/01/21 11:40
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jcode.plが読み込めない
-
cgiとplとpm
-
Not Found 404エラー時のCGI出力
-
セッションファイルが作成でき...
-
useとrequireでエラー
-
コマンドラインでGET or POSTで...
-
6月の第2 第4火曜日は何日...
-
月の第一週とは
-
よくある 『 第○(1・2・3・4・...
-
DBを10件毎に表示ページング...
-
[Excel] ある日の曜日が当月の"...
-
VBAでExcelのヘッダーに文字列+...
-
週2回のペースって だいたい何...
-
毎○曜日って、使いますか?
-
VBA。複数のChangeイベントをま...
-
エクセルで相対パスの書き方を...
-
エクセルで毎月第2週日の水曜日...
-
Excel VBA 第〇△曜日の場合休日...
-
土曜日の26時って何曜日の何時...
-
1日1回しかアクセスできないページ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
perlのrequireの動き方について...
-
Quantifier follows nothing in...
-
jcode.plが読み込めない
-
cgiとplとpm
-
htmlからテキストを返すperlを...
-
requireでreturnを使いたいので...
-
Perlソースを2つのファイルに分...
-
htmlファイルへのcgiの組み込み...
-
use CGI
-
セッションファイルが作成でき...
-
useとrequireでエラー
-
バイナリファイルのアップロード
-
自CGIのURLのパス部分を取得す...
-
Location: で cgi → c...
-
apacheのCGI設定について教えて...
-
error_logファイルの中身で教え...
-
webからroot権限のコマンドを実...
-
cgiからcgiをコールする。
-
Perlのデバッグ方法って。。。...
-
Perlの作動不具合、missing bra...
おすすめ情報