• 締切済み

ubuntuでサーバーを立てているのですがうまくいきません。

Linux初心者です。よろしくお願い致します。 ubuntuでwebサーバーをたてているのですがうまくいきません。 現状としては 一、apache2を入れています。 二、index.htmlではローカルIP、ドメインともに見れます。 三、dir.confでAddHandler.cgiをindex.htmlよりも優先順位を高くしたのち、二で接続すると500エラーではじかれます。 四、tail -f で確認すると ・Premature end of script headers: AddHandler.cgi と表示されます。 五、パーミッションはAddHandler.cgiが775、index.htmlが664です。 AddHandler.cgiの中身は以下の通りです。 #! /use/lib/perl use strict; use warnings; print 'index.html'->output; exit; 宜しくご指導鞭撻お願い致します。

みんなの回答

回答No.3

ANo.1です。 print文は、文字列を出力します。 print "index.html"; は[index.html]という文字列を出力します。 print 'index.html'->output; は、 'index.html'モジュールの output関数の結果を出力します。 index.html のファイルの中身を出力するのであれば、 以下3つの方法があります。 (1)システム関数を使って system("cat index.html"); とする。 (2)ファイルをオープンして出力する。   open(IN,"<index.html");   while ( <IN >) {     print;   } (3) モジュール File::Cat を使う。 http://search.cpan.org/~fimm/File-Cat-1.2/Cat.pm まずは、perlの基礎から勉強されることをお勧めします。

参考URL:
http://allabout.co.jp/internet/cgiperl/closeup/CU20030202A/
keeeeeeeen
質問者

お礼

Tanigucchiさん回答ありがとうございます。 perlは現在勉強中です。 perlのご指摘ありがとうございます。

回答No.2

ANo.1です。 まずは、ローカルで perl AddHandler.cgi を実行してみて AddHandler.cgiが正常に動くかご確認ください。 貴環境で print 'index.html'->output; で何が出力されるのかが今ひとつわかりませんが…

keeeeeeeen
質問者

補足

Tanigucchiさんまたしても回答ありがとうございました。 index.htmlというテンプレートを表示したいと思っていたのですが…。 ちなみにperl AddHandler.cgiを実行すると Can't locate object method "output" via packageindex.html" (perhaps you forgot to load "index.html"?) at AddHandler.cgi line 8. と出ました。 loadし忘れみたいなエラーなのですが、ロードとは一つひとつファイルをロードするということなのでしょうか? 重ねがさね質問で大変恐縮です。

回答No.1

HTTPヘッダが無いようですので print "Content-type: text/html\n\n"; を最初に出力するようにしてみては如何でしょう? 参考URLは、500エラーの対処です。

参考URL:
http://allabout.co.jp/internet/cgiperl/subject/msubsub_series_cgiperl04.htm
keeeeeeeen
質問者

補足

Tanigucchiさん早速の回答ありがとうございます。 さっそくAddHandler.cgiのprint 'index.html'->output;の前に入れて見ましたが変わりませんでした。

関連するQ&A