• ベストアンサー

ApacheでCGIが正しく動かない。

RedHatLinux8をインストールして、 Webサーバーを立てよう~と思い立ててみました。 Apache2.0.40です。 一応htmlファイルはのぞけるようになったんですが、 CGIがちょっとおかしくて・・・ #!/usr/bin/perl print "Content-type: text/html\r\n\r\n"; print "Hello, World."; ↑を書いたtest.plはHello, Worldとちゃんと表示されました。 しかし、掲示板・カウンターを開くと・・・ 「ログファイルを開くことができません」 という主旨のメッセージが表示され、正しく実行できません。 ./log.txt とちゃんと指定しているんですが・・・ そのログファイルを開くとサーバーがCGIをして認識しているらしく、 「InternetServerError」が出て開けない・・・。 CGIの属性は755 ログも緩くして755に設定しました。 それでも状況は変わりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.6

私も最新版を試してみましたが,以下の手順で動きました.(RedHat-8.0) ・アーカイブを /var/www/cgi-bin で展開 # cd /var/www/cgi-bin # lha -x /tmp/mkakikomitai.lzh ・mkakikomitai.cgi の perl のパスを修正 ・スクリプトの改行コードを変換 # dos2unix mkakikomitai.cgi ・cgi の実行許可 # chmod 755 mkakikomitai.cgi これで cgi は動くようになったので,あとはエラーを見ながら(いい加減ですが…)以下を実行 # mkdir old # chmod 666 mkakikomitai.cnt # chmod 666 mkakikomitai_cnt.txt # chmod 666 mkakikomitai.txt これでもうまくいかないようなら,cgi を設置した場所や,apacheの設定で変更した箇所など,詳しい情報を補足してください.

その他の回答 (6)

  • GINO
  • ベストアンサー率36% (18/50)
回答No.7

自信はないのですが、おいらが似たような状態になったときはディレクトリのパーミッションがだめでした。 ディレクトリも書き込み可かどうか確認してみはどうでしょうか?

mejikatan
質問者

お礼

ここでまとめてお礼させて頂きます。 なんとか自己解決しました(^^;) 原因はperl.confの設定ミスで、 本の通りにやってしまったのが原因と思われます。 余分な行をコメントアウトしながら試行錯誤を重ね、 見事に動きました~。 しかし文字化けが酷く日本語表示は不可能・・・ これは自分で調べたいと思います。 今まで回答して下さった皆さん、どうもありがとうございました。 いろいろと勉強になったのでとても良かったと思っています。

  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.5

試しにVer0.871をダウンロードしてみました。 mkakikomitai.cgiの先頭に「設置方法構成」が記載されているので、 それにしたがって権限設定・配置したら問題なく動きましたけど。 perlのパスが/usr/local/bin/perlになってたので、変更した程度ですね。 文字化けが激しいので、少し修正が必要かも。 とりあえず、動作確認報告でした。 >./log.txt とちゃんと指定しているんですが・・・ ところでlog.txtの説明などどこにも見当たらないのですが?

mejikatan
質問者

補足

画面が真っ白になったのは、文字コードの変換ミスで 中がめちゃめちゃになったからだと思われます。 ちゃんとしたCGIをもってきて設置してもやはり・・・ 「ログファイル(./mkakikomitai.txt)のオープンに失敗しました 」 と出ます。自分なりに考えたんですが・・・ http://サーバーマシンアドレス/cgi/main/mkakikomitai.txt cgi ←CGI設置フォルダ main←掲示板CGI設置フォルダmkakikomitai.txt←ログ ↑のアドレスを指定すると・・・ InternetServerError と出ます。多分サーバー側がログをCGIとして認識しているのが原因かと(w) 設定ミスでしょうか?

  • yosa
  • ベストアンサー率16% (28/170)
回答No.4

ログファイルを置くためのディレクトリを作成し、その ディレクトリの属性を777にして、ログファイル自体を 666にしてみたら、どうですか?。 これでできないなら、cgiのソース等みないとわからないですね。

mejikatan
質問者

補足

logフォルダを作って、所有者apacheグループapache にして、中のログファイルも上と同様に設定しました。 (このような設定でいいんでんしょうか?) 一応エラーメッセージは消えましたが・・・ 今度は真っ白画面になってしまいました(w こんなときエラーの原因を突き止める方法というのは 無いのでしょうか? CGIは配布されているもっと書き込み隊を使用しています。 http://tackysroom.com/cgi_mkakikomitai.htm 本体は設定項目以外は弄っていません。

noname#48234
noname#48234
回答No.3

こんにちは。 ログのパーミッションを777や766、666にしてみたらどうでしょうか? どういうスクリプトをお書きなのか分かりませんが、 掲示板やカウンターでログ・ファイルのパーミッションが755では訪問者が書き込めなくなってしまうような気がします。

mejikatan
質問者

補足

666,766,777等にしてみましたがどれも結果は同じでした。 どうしてなんでしょう・・・・

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

ログのパーミッションを0666(rw-rw-rw-)にしてみては。

mejikatan
質問者

補足

やってみます。

  • yosa
  • ベストアンサー率16% (28/170)
回答No.1

cgiファイルのオーナーは、apacheのユーザーですか? そうでなければ、属性は666だと思います。 あと、「ログファイルを開くことができません」のメッセージ は、apacheが生成しているのですか?。それともCGIの 中のロジックが生成しているのですか?。

mejikatan
質問者

補足

CGIが生成しています。 ログが開けなかったらエラーが出てくるみたいです。

関連するQ&A

  • cgi-lib.plのオフラインでの使用

    cgiの勉強をしています、Foolisともうします。 タイトルの通り、cgi-plをオフラインで使用したいのですが、やり方がわかりません。 今、httpdを使用して、 http://127.0.0.1/hello.cgi にアクセスしたら、(hello.cgiは以下の通り) ______________________ #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<H2>Hello! WORLD</H2>\n"; print "</BODY></HTML>\n"; exit; _____________________________ ちゃんとHello! WORLDと表示します。 form.htmlおよび、form.cgiを http://www.try-net.or.jp/~tanukiti/hp-add/cgi_learning/kl_cgi_09.html ここのページのように入力し、ファイルを作成したのですが、上手く動きません。もし解決策をご存知の方がいましたらよろしくおねがいいたします。

    • ベストアンサー
    • Perl
  • Apacheを入れたのにローカルでCGIが動かない

    こんにちは。今CGIの勉強をしています。perlを使っているのですが、サーバーにアップする前にローカルで動作チェックをしようと思い、ApacheとActivePerlをインストールしました。 その後、Apacheを起動して、ローカルのCGIファイルにアクセスしたのですが、ページを表示できませんと出てしまいます。 ping localhostはちゃんと通ります。 環境 OS:WindowsXP HomeEdition SP2 セキュリティーソフト:無し ファイヤーウォール:解除済み Apache設定 Network Domain 127.0.0.1 Server Name   127.0.0.1 Version2.0.58 ブラウザ:IE6.0 プログラム保存先:C:\Program Files\Apache Group\Apache2\htdocs ファイル名:hello.cgi(拡張子表示有にしている。.txtなどは無い) ActivePerl:Version5.6 保存先:C:\Perl\bin(C直下) コード #!C:/Perl/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<h1>Hello World!</h1>\n"; print "</body>\n"; print "</html>\n"; exit; 参考にしたサイト http://perl.misty.ne.jp/01.html 以上よろしくお願いします。

    • ベストアンサー
    • CGI
  • Apacheでcgiができないんです。

    以下のホームページと同じように、設定したのですが。。。 http://www.futomi.com/lecture/apache/config.html 下のcgiは実行できます。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>Apache</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<H2>Welcome to my computer, Apache Server!</H2>\n"; print "</BODY>\n"; print "</HTML>\n"; しかし、下のcgiは実行できません。htmlファイル、cgiファイル共に、あるホームページからコピペしたので、間違いないと思います。ここではhtmlファイルは書きませんが、以下のURLです。 http://www2j.biglobe.ne.jp/~apollo/server/apacuse.html #!/usr/local/bin/perl $countfile= "count.dat"; open(IN, "< $countfile"); $count = <IN>; close(IN); $count++; open(OUT,"> $countfile"); print OUT $count; close(OUT); print "Content-type: text/plain\n\n"; print $count;

    • ベストアンサー
    • CGI
  • cgiが動きません。。。

    つい最近、perlを勉強し始めた超初心者です。 ローカル(?)でcgiを作成したり、動かしたりしていたのですが、ホームページを開設してみようと思い立ちました。 早速、開設はしたものの、問題のcgiがまったく動いてくれません・・・ プロバイダはbiglobeです。まず、テスト用として「kantan.cgi」を用意しました。中身は #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "Hello world\n"; exit; です。ローカルではきちんと表示されます。 biglobeのwebFTPで「/public_html」に転送後、パーミッションを755に変更しました。 「http://www7a.biglobe.ne.jp/~*****/kantan.cgi」を開くと、「ページを表示できません」と表示されてしまいます。 「HTTP 500 - 内部サーバー エラー 」と書いてありますが、私には何のことだかサッパリわかりません。 アドバイスをいただけると助かります。よろしくお願いします。

    • ベストアンサー
    • CGI
  • DebianのApache(掲示板)CGIエラー 500エラー

    debianでkent-webさんのASKA BBSを使いたいんですが うまくいきません http://www.kent-web.com/bbs/aska.html aska BBS rootで/lib/usr/cgi-binに移動してvi test.cgi ------------------------------- #!/usr/bin/perl print "Content-type: text/html \n\n"; print "Hello"; -------------- を試して http://192.168.1.12/cgi-bin/test.cgi は動くんですが which perl /usr/bin/perlです パスはあっています 本題のBBSをデスクトップにDLし tar -xvzf 解凍をし rootで/usr/lib/cgi-bin/に aska.cgi askalog.dat jcode.plを置き パーミッションをhttp://www.kent-web.com/bbs/aska.htmlにあわせて わらかないのでsuEXECサーバ CGIWrapサーバ用のパーミッションと一般サーバを両方ためしてみたんですが http://192.168.1.12/cgi-bin/aska.cgi?mode=checkで試したんですが 500エラーがてしまいます ちなみにaska/aska.cgi?mode=check のaskaフォルダは作らず cgi-bin/aska.cgiです かわらなそうなので http.confの設定は <IfModule mod_alias.c> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # # "/usr/lib/cgi-bin" could be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory /usr/lib/cgi-bin/> AllowOverride None Options ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> </IfModule> AddHandler cgi-script .cgi .sh .pl ちゃんと#を外してあります それとほかの質問者の方を参考にしたんですが mod_aliasなんたら モジュールとかよくわからず apt-cache search module cgiなどといろいろ探したんですが無く これのperlのパスをわざと間違えさせてやっると500でエラーが出るってことはちゃんと動いてるはずだと思うんですが ちゃんともどすとhelloと表示されます 間違えーー>#!/hogehoge/hogehge/perl 元-->#!/usr/bin/perl #!/usr/bin/perl print "Content-type: text/html \n\n"; print "Hello"; それと疑いがあるのが aska.cgiのパスはちゃんと/usr/bin/local/perlを whichでみたperlのパス /usr/bin/perlに設定したんですが 動かないみたいです もしかしてgnome-text-editorなどviで開くと文字コードがかわったりしてだめなんでしょうか? もう思い当たる節がありません どなたか詳しい方教えてくださいお願いします

  • @PAGESのCGIについて

    @PAGESに登録してみて簡単なcgiをrubyで書いたのですがエラーになり通りません 本当なら@PAGESの掲示板に書くべきなのでしょうが凍結されていて書きこめませんでした わかる方助言をいただけるとありがたいです #!/usr/local/bin/ruby print "Content-type: text/html\n\n" print "Hello World" 拡張子はcgiにしてパーミッションは755です

    • ベストアンサー
    • CGI
  • CGI設置時に500エラーになります

    CGIを設置しようとしたところ、500 Internal Server Error になります。 共用サーバーIDを使用しています。 CGIファイルは「cgi-bin」の中に入れています。 たとえばこんな簡単なCGIでテストしたのですが、500 Internal Server Errorになってしまいます。 ↓ #!/usr/local/bin/perl print "Content-type: text/html \n\n"; print "Hello"; #!/usr/local/bin/perlを #!/usr/bin/perlにしても結果は同じです。 (サーバーの指定は#!/usr/local/bin/perl) パーミッションは755にしています(705に変えてもダメでした)。 CGIファイルの改行コードはLFにしており、テキスト(ASCII)モードでアップロードしています。 それでも500 Internet Server Errorになります。 サーバーではエラーログが見られないのでみなさんにお聞きしたいのですが、他にどんな原因が考えられるでしょうか?

  • 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エラー

    CGIビギナーです。 イントラネットで使用しているパソコンをWEBサーバーとして掲示板を設置したいとおもっていますが、CGIエラーがでます。 CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: Can't locate ./jcode.pl at c:\inetpub\wwwroot\AAA\BBB\CCC\DDD.cgi line 34. CGI自体は以下のCGIファイルで試したところ、 ちゃんとIEで表示されました。 #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<HTML><BODY>\n"; print "<H2>Hello!</H2>\n"; print "</BODY></HTML>\n"; exit; なので、CGIとしては動作できる環境になっているとおもっていて、ソースの間違いだろうなぐらいしか分かりません。 (ビギナーが)間違えそうなところをご指摘お願いします。 OS WINDOWS2000 PRO IIS5.0

    • 締切済み
    • CGI
  • Mac OSX LionでCGI/Ruby動かず

    Mac OSX Lionを使っています。 CGIでRubyを使いたいと思い、 以下のことを試したのですが、 500 Internal Server Error となってしまいます。 ◆やったこと 以下のファイルを /Library/WebServer/CGI-Executables に置きました。 (改行コードはLFとしました) --test.cgi--- #!/usr/bin/ruby print "Content-Type: text/html¥n¥n" puts "Hello Ruby" ----- そしてchmod 777としてブラウザから http://localhost/cgi-bin/test.cgi にアクセスしたところ、 500 Internal Server Error となってしまいます。 その際の/var/log/apache2/error.logは、 Premature end of script headers: test.cgi とだけ表示されます。 なんだか一番最初の所でつまづいてしまい、 めげそうになっております。 よろしくご教授ください。

    • ベストアンサー
    • CGI