• 締切済み

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

  • Linux7.2のApacheのCGIについて

    CGIを作成してアクセスしたところInternalServerErrorとなってしまいました エラーログを参照したところ Premature end of script headers; /home/tenchan/public_html/cgi-bin/test.cgi となっていました。 原因がわからず困っておりますもしおわかりの方いらっしゃいましたら教えてください。 アパッチの設定は以下の点を修正しました AddHandler cgi-script .cgiのコメントをはずしました <Directory "/home/*/public_html/cgi-bin"> Options ExecCGI </Directory> test.cgiの内容は #!/usr/bin/perl print "Contetnt-type: text/html\n\n"; print "<HTML><BODY>Hello</BODY></HTML>"; です コンソールで実行した際には「Hello」と表示されたので test.cgiには問題はないと思います また、Linux上で作成しましたので改行コードなどの問題はないと思うのですが 何か参考になるようなアドバイスありましたらよろしくお願いします。

  • CGIフォルダ内でhtmlが見れません。。

    はじめまして。 ウェブサーバー(Vine Linux2.6 r4 , Apache1.3) を使用しています。 cgiフォルダをcgi-bin として、.cgi .pl の拡張子の ものは実行できるのですが、.html は forbidden 403 権限がありませんとしてエラーが出ます。 cgi ディレクトリの設定をこのようにしていますが、 <Directory /home/httpd/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all AddHandler image/gif .gif AddHandler image/jpeg .jpeg .jpg .jpe AddHandler image/png .png AddHandler text/html .html .htm ←これでいけると思ってました。 </Directory> うまくいきません。 htmlファイルの属性は644になってます。 これを755とかに変更すると今度はinternal server error となってしまいます。 何が悪いのか おわかりになるかたご回答いただけますでしょうか。 よろしくお願いします。

  • Apache/2.2.13 WebサーバーでCGIが動きません

    ご迷惑をおかけして、すいません。 何方か助けてください。お願いいたします。 OS Redhat Linux Fedora 11 バージョン 1.430 Webサーバー Apache バージョン 2.2.13 perl perl 5.10.0-73.fc11 httpd.confの記述 ------------------------- AddHandler cgi-script .cgi .pl ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" <Directory /home/www/cgi-bin> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> ------------------------ デレクトリー /home/www/cgi-bin 属性(775 rwxrwxr-x) CGIファイル 属性(775 rwxrwxr-x) http://eiwa-up.com/cgi-bin/index.pl http://eiwa-up.com/cgi-bin/index.cgi 同じファイルで拡張子が.plは正常に動作します。 拡張子が.cgiだと動かない状態です。 お忙しい中申し訳ありませんが、何方か助けてください。 お願いいたします。 趣味で無料レンタルCGIをボランティアで提供していたのですが、 先月Linux Laser5が老朽化のためダウンしてしまい、新しくFedora11のwebサーバーを新インストールしているのですが私の知識では解決できそうにありません。無料レンタルCGIで使用していたサーバーのためたくさんの方にご迷惑おかけしている状態です。 なぜ.cgi拡張子だと動作しないのか?解決方法を教えていただけたら憂いしいのですが。よろしくお願いいたします。

  • CGIが使えないのはなぜ?

    こんにちは。 現在Redhat8を使用して、サーバーを作っています。apacheを起動してサイトが表示できるまではOKだったのですが、CGIを使う段階でつまづいています。 httpd.confは様々なサイトを見てそのとおりに編集したのですが、いざCGIを起動するとServerError!となります。Error_logを見ると↓のような妙な文章でした。Permissionなら分かるのですが、、これは何でしょう。 Premature end of script headers: XXX.cgi CGIの先頭のPerl指定は #!/usr/bin/perl にしてあります。何が悪いのか分からず途方にくれています。何かチェックする部分があればどうかご指摘ください。お願いします。パーミッションの設定は完了しており、CGIスクリプト自体も先頭以外はいじっていません。 RedHat8.0 Apache2.0 /home/www/html にHTMLファイル /home/www/cgi-bin にCGIスクリプト ----------------以下関係のありそうなhttpd.confの抜粋 ScriptAlias /cgi-bin/ "/home/www/cgi-bin/" <Directory /home/www/cgi-bin> Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi

  • apacheのCGI設定

     pc9821にFreeBSD(98)をいれapache1.3を起動させています。cgiはlight.cgiというソフトをつかっています。なかなかcgiがうまくいきません。参考ページには public_html / index.html (トップページ) | +-- bbs / light.cgi [755] | admin.cgi [755] ・・・・(省略) +-- lock [777] / | +-- past [777] / 0001.cgi [666] とかかれていますが、実際に私のサーバーにはpublic_htmlというフォルダは存在していなくて /usr/local/www/cgi-binにbbsというフォルダをつくり あとは上のようにしています。またindex.htmlは/usr/local/www/dataのなかにいれて表示してWebサーバーとしてはたらいています。またapacheの/usr/local/etc/apacheのhttpd.confは 関係ありそうな行だけあげると ServerRoot "/usr/local" DocumentRoot "/usr/local/www/cgi-bin" <Directory "/usr/local/www/cgi-bin/bbs"> Options Indexes FollowSymLinks MultiViews <location "/cgi-bin/"> Options ExecCGI AllowOverride AuthConfig Limit Order allow ,deny Allow from all </Location> <IfModule mod_mime.c> TypesConfig /usr/local/etc/apache/mime.types ADDHandler cgi-script .cgi </IfModule> ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin/" <Directory "/usr/local/www/cgi-bin/bbs"> AllowOverride None Options ExecCGI Order allow,deny Allow from all </Directory> AddHandler cgi-script .cgi どこがおかしいのかおしえていただけないでしょうか?

    • ベストアンサー
    • CGI
  • apacheのCGI設定について教えてください。

    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 の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • apache でバイナリのCGIを動かすには

    apache でバイナリのCGIを動かすにはどうすればよいのでしょうか? (なお、プログラム自体に問題は決してありません。『HTTPD』を使うと問題なく動作します) OS:WIN98 C++バイナリのCGIを呼び出すと下記エラーとなります。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please .... the error. More ... log. - Apache/1.3.12 Server at http://127.0.0.2/ Port 80 最終アクセスログ 127.0.0.1 - - [12/Mar/2001:23:20:27 +0900] "GET /ab.cgi HTTP/1.1" 500 610 最終エラーログ [Mon Mar 12 23:20:25 2001] [error] [client 127.0.0.1] Premature end of script headers: e:/www.homepage/kokucho81/ab.cgi apache の httpd.conf と httpd.conf.default との比較 ** httpd.conf ServerName http://127.0.0.2/ ** httpd.conf.default #ServerName new.host.name ** httpd.conf DocumentRoot "E:/WWW.HOMEPAGE/KOKUCHO81" ** httpd.conf.default DocumentRoot "C:/Apache/htdocs" ** httpd.conf <Directory /> Options FollowSymLinks ExecCGI AllowOverride None ** httpd.conf.default <Directory /> Options FollowSymLinks AllowOverride None ** httpd.conf <Directory "E:/WWW.HOMEPAGE/KOKUCHO81"> ** httpd.conf.default <Directory "C:/Apache/htdocs"> ** httpd.conf Options Indexes FollowSymLinks ExecCGI ** httpd.conf.default Options Indexes FollowSymLinks MultiViews ** httpd.conf AddHandler cgi-script .cgi ** httpd.conf.default #AddHandler cgi-script .cgi そもそも、設定が足りてないんでしょうか? apacheを良く使う方、よろしくお願いします。m(_ _)m

  • RedHatLinux9でCGIがうまく動きません。

    RedHatLinux9でApache2x系なのですが、CGIがうまく動きません。 Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: test.cgi error 500 が出てしまいます。 行った作業としては、 # UserDir public_html の#をはずす #AddHandler cgi-script .cgi の # を外す. # <Directory /home/*/public_html> <略> # Options MultiViews .... <略> # </Directory> の3カ所の # を外し,Options に ExecCGI を追加. /usr/sbin/suexec を削除 という、こちらの掲示板に書いてあった作業を行いました。cgiがまず動くのかどうか確かめるために /var/www/cgi-bin/ にtest.cgi(ほかのサーバで検証したcgiです)を送りましたが見れなかったです。 http://サーバのIP/cgi-bin/test.cgi でよいんですよね、上のcgiを確かめるパス。 これが間違ってたら。。。動かしたいのは一般ユーザの中でcgiが動くようにしたいのです。 パーミッションも問題なかったです。お願いいたします。

  • Apach2.0 ホームディレクトリでCGIが

    こんにちは。 CGIの勉強をしています。 わかる方がいらっしゃいましたら、おしえてください。 ソースは、poderosaでつないでviにて作成。 ブラウザからのアクセス http://XXX.XXX.XXX.XXX/~admin/cgi-bin/test.cgi (test.cgi)755 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello\n"; ./test.cgi にて、Helloと表示される (httpd.confに追加したもの) UserDir public_html <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 以下を追加したこともあり↓ <Directory /home/*/public_html/cgi-bin/> AllowOverride None Options ExecCGI SetHandler cgi-script Order allow,deny Allow from all AddHandler cgi-script .cgi </Directory> よろしくおねがいします。

  • CGIが動きません!!

    CGIが動きません。htmlを表示できる状態です。 エラーログには「 couldn't spawn child process: g:/program files/apache group/apache/cgi-bin/hello.cgi」と表示されています。 どうしたら良いのでしょうか? windouw NT 4.0 + Apache version 1.3.19 + Active Perl version 5.005_03 です。 perlの構文チェックは問題なしです。 httpd.confの設定は下記のようにしました。 1.AddHandler cgi-script .cgi を追加。 2.オプションの設定にExecCGIを追加。 <Directory "G:/Program Files/Apache Group/Apache/cgi-bin"> AllowOverride None # Options None Options ExecCGI Order allow,deny Allow from all </Directory>