Apache2.0 (@linux)の httpd.confについて質問です。


ユーザ( ~ チルダフォルダ以下)のCGIの実行ができません。
A http://www.domain.com/test.cgi ←実行できる
B http://www.domain.com/~hogehoge/test.cgi ←実行できない
[Server error! (Error 500)]

AとBのパーミッションの設定は同じです。test.cgi内容も同じです。

httpd.conf の
UserDir やら ディレクティブ やら ScriptAlias やら ExecCGI やら、
どれがまずいのか分かりません。
OptionsをOptionとか書いているなんて事もありませんorz
助けてください・・・orz
ポイントなら・・・ポイントなら出します!(orz

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/09/14 21:11:26
  • 終了:--

回答(6件)

id:masahikokimoto No.1

masahikokimoto回答回数241ベストアンサー獲得回数102005/09/14 21:21:20

ポイント50pt

<Directory /***/home/*/public_html>

の中の、AllowOverride にOptionsを加えるか、All にしてみたらダメですか?

id:nekoten

それはどういう事でしょうか・・・

とりあえず

<Directory /home/*/public_html>

Options All

AllowOverride All

</Directory>

でやってみましたが、症状は変わりませんでしたorz

2005/09/14 21:29:36
id:maq No.2

maq回答回数81ベストアンサー獲得回数52005/09/14 21:32:49

ポイント50pt

http://httpd.apache.org/docs/2.1/ja/howto/public_html.html#cgi

�桼�����Υ����֥ǥ��쥯�ȥ� - Apache HTTP ������

ここに書いている方法でいかがですか?

ダメなら、httpd.confの他の部分も関係している可能性があるので、httpd.confを見ないとなんとも。

id:nekoten

書いてみましたがダメでした・・・。

とりあえず そのサイトの記述をまねて、

それ意外の部分の検討をしようと思います。

ちなみに error_log には次の2行が出まくっています。

[Wed Sep 14 21:55:45 2005] [error] [client 192.168.0.5] Premature end of script headers: test.cgi

[Wed Sep 14 21:55:45 2005] [error] [client 192.168.0.5] (13)Permission denied: exec of ’/usr/lib/apache2/suexec’ failed

2005/09/14 22:08:30
id:ootatmt No.3

ootatmt回答回数1307ベストアンサー獲得回数652005/09/14 21:33:02

ポイント50pt

http://allabout.co.jp/career/cgiperl/closeup/CU20040209B/index.h...

500エラー撲滅[実践編] サーバエラーはまずココを確認! - [CGI・Perl]All About

500 Internal Server Error なら、CGIは実行されていますね。

Apacheの設定の問題ではないと思います。


同じCGIで片方がエラーになるということであれば、require しているファイルがないとか、FTP時にASCIIモードになっていなかったとかではないですか。

id:nekoten

Asciiモードで転送されてはいました。

念のため、ascii、バイナリ、両モードで試しましたがダメでした。

実は apache1.3 で今まで運用していたんですが、

1.3をアンインストールして apache2を入れたら

今まで動いていたもの(チルダフォルダ以下)がノキナミ動かなくなっていたんです。

う、うーーーん、スッゴク困ってます・・・・・・

2005/09/14 22:18:07
id:Kumappus No.4

くまっぷす回答回数3784ベストアンサー獲得回数1852005/09/14 21:34:32

ポイント300pt

2chなら「まあもちつけ」とか書かれそうですが、もし可能ならhttpd.confの見られちゃまずいとこだけ隠してダイアリーかどこかに晒した方が結果的に答えは来やすいでしょうね。

エラーも正確には

500 Internal Server Error

では(わかるからいいですが)。


とりあえず、

「~hogehoge/以下はApacheを実行しているユーザが読める/プログラムを実行する権限があるか?」

id:nekoten

confサラシそろそろしそうな雰囲気ですorz

2chに質問しに行ったんですが、ドコの板のどのスレで聞くべきか悩んでヤメマスタw

ていうか、権限、ナルホドと思ってこれまた試して見ました。

User apache #←デフォルトではこうだった

Group apache #←デフォルトではこうだった

#User nobody #←ネットで調べてこれにしてたw

#Group nobody #←ネットで調べてこれにしてたw

上記のようにapacheしたら、 /~hogehoge/test.cgi が動きました!

うおおおおおおっ Σ ゜~(Д゜~lll)

でもそれ意外のフォルダでは症状が変わりません。権限が無い悪寒・・・

でも光が射してきますた先生!!

2005/09/14 22:37:57
id:ootatmt No.5

ootatmt回答回数1307ベストアンサー獲得回数652005/09/14 22:37:26

ポイント100pt

> ちなみに error_log には次の2行が出まくっています。


suEXEC を無効にして、Apacheを再起動してください。

具体的には、/usr/lib/apache2/suexec を削除して、Apache を kill して再起動です。

id:nekoten

suexec*を削除ですか・・・削除って響きにとても抵抗がありますorz

削除後、元に戻す方法はありますか?suexec*を他のフォルダに退避させておいて、

再びコピペで戻るのでしたらやってみたいです・・・

2005/09/14 22:52:41
id:Kumappus No.6

くまっぷす回答回数3784ベストアンサー獲得回数1852005/09/15 18:16:04

ポイント400pt

http://www.toshikazu.org/archives/000009.html

仕事と家事の狭間に:Apache suEXECの導入と既存環境からの移行

5の人の言うように消す(消さなくても一度名前変えるだけでよし。/usr/lib/apache2/modules/mod_suexc.so→/usr/lib/apache2/mod_suexec.so.1

とかね)でもいいけど、httpd.confのなかの

LoadModule suexec_module libexec/apache2/mod_suexec.so

の頭に#つけてコメントアウトすれば…。

でね、問題はUNIXのパーミッション(権限)に質問者さんが慣れてないところにあるような気がしてきました。

ユーザをapacheにして動いたのは、~hogehogeのパーミッションが750とかになっていて、apacheとhogehogeが同じグループにいたから?じゃないでしょうか。

suExecのエラーは上記URLの

「SuexecUserGroupによる指定 と UserDirによる変更 が共存できないという問題」

のような気が。


なお、その下に


「補足」


CGIプログラムの実行権限をWebサーバ以外のものとする方法は、suEXECモジュールを使う方法だけではない。


というのがあるのでそこを参考にしてみてください。

id:nekoten

まず最初に、ご報告をします。

どのフォルダもパーミッションが 777 だったのを 755 にしたら、ちゃんと動くようになりました。

私の考えでは、権限がゆるい分には問題無いと思っていたのですが、

そのサイトの「ディレクトリを他のユーザが書き込めては動かない」という一文を見て、

何となく気になっていじってみたらCGI動きました・・・orz

(その一文が私のこの行動を意図していたのかはわかりませんが・・・)

Kumappusさんの仰る通り、ユーザとパーミッションの管理にかなり弱い私でした・・・

Kumappusさんには特にお礼をさせて頂きます。

本当に有り難うございました。

今回は本当に勉強になりました。

周りに有識者もいないので、ホントに皆さんのご助言、有り難かったです。

シツレイシマスタ・・・

2005/09/15 19:43:14
  • id:ootatmt
    こんな方向でいいのか?

    パーミッションを変えたら動いたっていうのはいいんだけど、
    問題は、理解せずに suEXEC を有効にしていることですよね。
    すぐに suEXEC を無効にすることをすすめます。
  • id:nekoten
    Re:こんな方向でいいのか?

    suEXEC は使ったほうが良いわけではないのですか?
    どう良いか把握してない(調べます)のですが、suEXEC を使ったほうが良いと思っていました・・・
    でもootatmtさんの教えてくれたURLに、
    > あなたが root に setuid されたプログラムと、それらから生じるセキュリティ上の問題の管理に 詳しくないようなら、suEXEC の使用を検討しないように強く推奨します。

    と書いてあるので無効にしてみようと思います・・・。
    とりあえず動いたからいいや じゃ、サーバ持ちとして良くないですもんね・・・

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません