• 締切済み

apacheでcgi

AddHandler cgi-script .cgiを有効にして.htaccess の中にOptions +ExecCGIAllを記述してhttpd.confのowOverride Options としてcgiを実行しようとしたら下記エラーになりました。 [Thu Nov 15 11:16:54 2001] [error] (13)許可がありません: exec of /home/jin/WWW/cgi-bin/tslbbs.cgi failed [Thu Nov 15 11:16:54 2001] [error] [client 192.168.0.9] Premature end of script headers: /home/jin/WWW/cgi-bin/tslbbs.cgi それで、 #AddHandler cgi-script .cgi として、 <Directory /home/*/WWW> Options ExecCGI </Directory> にしたら cgiのソースが見えてしまいます。 cgiのPermissionsは755になっております。 ScriptAliasで/cgi-bin/ /home/*/WWW/cgi-bin/を記述してOptions ExecCGIにしてもソースが見えてしまいます。 cgiを実行させるのにはどうすればいいのでしょうか?? (以前Linuxを良くわからないときに(今でも解っていませんが・・)同じような質問をここに挙げてその時は単純な自分の間違いで動かなかったのですが単純なソースのミスでした。それで今度はLinuxをインストールをしなおしたら動かなくなったのです。 http://apachetoday.com/news_story.php3?ltsn=2000-06-05-001-10-NW-LF-SW 等覗いてそれをやっても動かないのです。 多分単純なことなのかもしれませんが行き詰まって困っております。 昨日の質問でユーザーのHTMLが見れないのはURLの指定で最後に'/'をつければ問題なく見れました。今はイントラネットでLinuxを動かしているのですが、実際のインターネットでは最後の/は入れたり入れなかったりでも問題なく見れるのですが、正しくは最後に/を入れるみたいですね。)

みんなの回答

  • tailkuppa
  • ベストアンサー率53% (52/98)
回答No.3

>それで、 >#AddHandler cgi-script .cgi >として、 ><Directory /home/*/WWW> > >Options ExecCGI > ></Directory> >にしたら >cgiのソースが見えてしまいます。 この手の設定ファイル一般に言えるのですが、 先頭の# は、コメントを表します。 ので、 #AddHandler cgi-script .cgi なる記述は、コメント(=有効な記述として読んでくれない)として解釈されます。 ので、今回のhttpd.conf に AddHandler cgi-script .cgi =「ファイル名の末尾に.cgi がついているファイルはCGIスクリプトとして扱う」 の設定がされているかどうかは、この時点では実は不明です。 (ここでは設定されていません。が、他の場所にあるかもしれません) もし、.htaccess 内に AddHandler cgi-script .cgi と書いてあれば、.htaccess での設定が有効になるように設定されていれば、 (AllowOverride) 設定は有効になると思われます。 /cgi-bin/ 以下のファイルがデフォルトで実行可能になる、というのは、 そのcgi-bin にAlias されたディレクトリについて、<Directory> でCGI が実行可能に設定されているからそうなる話であって、そのAlias を変更した状態では話が変わってくるような気がします。 >cgiのPermissionsは755になっております。 >ScriptAliasで/cgi-bin/ /home/*/WWW/cgi-bin/ >を記述して Options ExecCGIにしてもソースが見えてしまいます。 上記のとおり、コメントになっているために、設定がされていないのではないか、とのご回答があったのだと思います。 長い前置きでしたが、以下に本題を。 状況がつかめないので、可能性があるとしか言えませんが...。 >cgiを実行させるのにはどうすればいいのでしょうか?? >[Thu Nov 15 11:16:54 2001] [error] (13)許可がありません: exec of /home/jin/WWW/cgi-bin/tslbbs.cgi failed >[Thu Nov 15 11:16:54 2001] [error] [client 192.168.0.9] Premature end of script headers: /home/jin/WWW/cgi-bin/tslbbs.cgi このエラーメッセージって、cgi 自体は実行されたけど、その実行されたcgi がパーミッションのエラーを起こした場合にもこのように出る気がします。 CGI の実行ユーザ(httpd の実行ユーザか、httpd.conf 内に書いてあるUser/Group が有効ならば、そのユーザ/グループ)でアクセスできるファイルのパーミッションになっているでしょうか?

参考URL:
http://www.srs.ne.jp/~north/netdaemon/httpd_conf.html
jincyan
質問者

補足

>先頭の# は、コメントを表します。 >ので、 >#AddHandler cgi-script .cgi >なる記述は、コメント(=有効な記述として読んでくれな >い)として解釈されます。 #がコメントなのはわかっております。 GNOMEのapacheの設定で初期設定したのですが、(そのときExecCGIは有効にしておりました)展開されたhttpd.confのAddHandler cgi-script .cgi はコメントになっておりました。 ScriptAliasで記述したフォルダがデフォルトでCGIを実行するときAddHandler cgi-script .cgiは関係ないと思ったのです。(HPでみたapacheのマニュアルにもScriptAliasで記述したフォルダでOption ExecCGIでCGIは動くと書いてあり、AddHandler cgi-script .cgi は任意のフォルダ下の、.htaccessによるCGI実行をさせたいときに使うと書いてあると私は解釈しました。) ようはtailkuppaさんはCGIを動かすときはAddHandler cgi-script .cgiが必須だと云われているのですね?? >[Thu Nov 15 11:16:54 2001] [error] (13)許可がありません: exec of /home/jin/WWW/cgi-bin/tslbbs.cgi failed >[Thu Nov 15 11:16:54 2001] [error] [client 192.168.0.9] Premature end of script headers: /home/jin/WWW/cgi-bin/tslbbs.cgi CGIを実行しようとしてでたメッセージなのは理解できます。apacheのUser・Groupeはnobodyになっております。 jinユーザーは何処のグループにも属していません。 素朴な疑問なんですが、IEでCGIを起動するのにそのLinuxのユーザーまたはグループでなければ起動がかからないのですか??(なら世間の掲示板やチャットは誰でも何故使用できるのでしょうか??) パーミション755ってことは後の5で誰でも読込と実行が出来ることではないのですか?? (前インストールしたときにCGIがユーザーフォルダで動いたときはOption ExecCGIとするだけで動いたようなきがします・・・が思い違いでしょうか??)

  • misoka
  • ベストアンサー率35% (56/160)
回答No.2

><Directory /home/*/WWW> >Options ExecCGI ></Directory> とりあえず、CGIが cgi-bin にあるのなら、ディレクトリの指定は   "/home/*/WWW/cgi-bin" じゃないでしょうか?

jincyan
質問者

補足

ScriptAliasで/cgi-bin/ /home/*/WWW/cgi-bin/を記述しているのですが・・・ 上の記述はUserDirの記述です。 ScriptAliasで/cgi-bin/があればそこが動くようにマニュアルにあるのですが・・・???

  • YUNTAKU
  • ベストアンサー率25% (32/128)
回答No.1

>それで、 >#AddHandler cgi-script .cgi >として、 ><Directory /home/*/WWW> >Options ExecCGI ></Directory> #AddHandler cgi-script .cgi とコメントアウトしたら当たり前、ソースが見えてしまいますよ。 AddHandler cgi-script .cgi として、#をはずしたら言いと思います

jincyan
質問者

補足

#AddHandler cgi-script .cgi はhttpd.confのデフォルトです。この場合デフォルトのScriptAliasの/cgi-bin/ ではCGIは動作するとapacheのマニュアルにありますが?? AddHandler cgi-script .cgi は.htaccessをつかってフォルダ毎のコントロールに使うものだとマニュアルを読みまして受け取ったのですが私の理解能力が不足しているのでしょうか?? 私の知りたかったのはではどうすれば動くかということを伺いたかったのですよ!

関連するQ&A