- 締切済み
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; 宜しくご指導鞭撻お願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Tanigucchi
- ベストアンサー率70% (43/61)
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の基礎から勉強されることをお勧めします。
- Tanigucchi
- ベストアンサー率70% (43/61)
ANo.1です。 まずは、ローカルで perl AddHandler.cgi を実行してみて AddHandler.cgiが正常に動くかご確認ください。 貴環境で print 'index.html'->output; で何が出力されるのかが今ひとつわかりませんが…
補足
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し忘れみたいなエラーなのですが、ロードとは一つひとつファイルをロードするということなのでしょうか? 重ねがさね質問で大変恐縮です。
- Tanigucchi
- ベストアンサー率70% (43/61)
HTTPヘッダが無いようですので print "Content-type: text/html\n\n"; を最初に出力するようにしてみては如何でしょう? 参考URLは、500エラーの対処です。
補足
Tanigucchiさん早速の回答ありがとうございます。 さっそくAddHandler.cgiのprint 'index.html'->output;の前に入れて見ましたが変わりませんでした。
お礼
Tanigucchiさん回答ありがとうございます。 perlは現在勉強中です。 perlのご指摘ありがとうございます。