script headersって?

このQ&Aのポイント
  • Premature end of script headers: c:/www/public_htm/up_file.cgi
  • String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1""
  • syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd""
回答を見る
  • ベストアンサー

script headers って?

NO.202703の質問をしたものです。 1.Premature end of script headers: c:/www/public_htm/up_file.cgi 2.String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" 3.syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" 4.Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 2.3.4.のエラーについては、解決?できました。 (エラー行をコメント(#)にしたりしてるうちに・・・原因はよくわかりませんでしたが・・・) 1.のエラーの意味がわかりません。  script headers って何のことなんでしょうか? ※ このエラーログはApacheのサーバーのログです ※ このCGIは、フォームデータを受けっとてファイルを更新するようになっています。

  • Perl
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • hamatyu
  • ベストアンサー率62% (18/29)
回答No.2

私も改行コードの変換ということはやったことがないのですが、 参考URLにはshinsa14と同じエラーでの質問に対する答えのようなので、 参考にしてみてください。 >MAINでサブをコールだけの構造というのは、文法上、誤ってるのでしょうか? sub1,sub2,sub3があるファイルをrequireしていればまったく問題ないと思いますよ。 また、KcatchというPerl用のデバッガがあるので、それを使ってみると、 「Premature end of script headers」より詳しいエラーが吐き出されると思うので、 使ってみてはいかがでしょうか。↓がダウンロードと説明ページです http://www.kawa.net/works/perl/catch/news.html

参考URL:
http://mm.apache.or.jp/pipermail/newbie/2001-November/001523.html
shinsa14
質問者

お礼

ありがとうございました。 参考URLのところ参考になりました。 原因は、はっきりわからなかったんですが、なんとなく解決してしまいました。 また、よろしくお願いします。

その他の回答 (1)

  • hamatyu
  • ベストアンサー率62% (18/29)
回答No.1

Premature end of script headersというエラーは、 「CGIからhttpdに返されたヘッダーが正常に終了していない」という大雑把なエラーメッセージなので、 原因は「これだっ」というのが特定できません。 エラーログがあるのならば、まずエラーログを見てみると 良いかもしれません。 一応、チェックするべきところを書いてみます。 1.ソースの1行目に#!/usr/local/bin/perlのようなperlまでのパスを記述してあると思いますが、 そのパスはあっていますか? 2.改行コードは正しいでしょうか?改行コードが正しくないと、#!/usr/local/bin/perlの後に 余分なものがついてパスが正しく認識されないので、確認してみてください。

shinsa14
質問者

お礼

ありがとうございます。 パスの記述は、あっているようです。 改行コードについてなんですが、改行コードを調べる方法がわかりません。 エディター(Wordpad)で単純に改行(Enter)しているだけなんですが、・・・ ご指摘のとおり、プログラムをべつのCGIにまるごとコピーして実行すると、 できたりすることがあります。 つまり、改行コードにかぎらず、変なコードが混ざってる(ソース上では見れない)ってことですかね・・・ ファイルをHexモードで表示できるツールみたいなのはありますか? あと、このプログラムなんですが  &sub1;  &sub2;  &sub3; といった感じになっていて、MAINでは、サブを呼んでるだけなんですが、ここに簡単な、コードを追加すると動くみたいなんです。 例えば:  &sub1;  &sub2;  &sub3;  PRINT ”OK !¥n” MAINでサブをコールだけの構造というのは、文法上、誤ってるのでしょうか?   

関連するQ&A

  • Perl で syntax error

    Perlを勉強中です。 ローカル環境(Win98 / Apache)でCGI(Perl(5.6.))をテストしようとすると、下記のようなエラーメッセージが出ます。 Premature end of script headers: c:/www/public_htm/up_file.cgi String found where operator expected at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 59, near "open INDD1, "$indd1"" syntax error at c:\WWW\PUBLIC~1\UP_FIL~1.CGI line 58, near "open(INDD1, "$indd"" Execution of c:\WWW\PUBLIC~1\UP_FIL~1.CGI aborted due to compilation errors. 多分、ファイルのopen定義が間違ってるような感じなんですが、SOURCEと1日にらめっこしてても、どうにもこうにも解りません・・・ よろしくお願いします。 === SOURCE CODE ================ open(INFILE, "$indd") || die "can't open : $!"; open(OUTDD1, ">$outdd1") || die "can't open : $!"; ※ OUTPUT file のほうは、エラーになってないみたいなのに・・・ ※ いちおう、簡単なCGI(メッセージの表示)は、実行できます。

  • 文法はあってるのにサーバーエラーが出る

    perlで構文チェックをしたところ、OKが出たので、 アパッチにて実行したところサーバエラーがでました。 調べたところ、以下のようなエラーが出ましたが、これは、サブルーチンや、ライブラリが呼出されていないのでしょうか?どのように対処すればいいか教えてください。 Premature end of script headers: c:/www/public_html/subsub.cgi Undefined subroutine &jcode::convent called at c:\WWW\PUBLIC~1\SUBSUB.CGI line 8. Premature end of script headers: c:/www/public_html/okikae.cgi Can't locate cgi-bin.pl in @INC (@INC contains: C:/usr/local/lib C:/usr/local/site/lib .) at c:\WWW\PUBLIC~1\OKIKAE.CGI line 3.

    • 締切済み
    • CGI
  • error_logファイルの中身で教えて・・「 Premature end of script headers: 」

    Perl初心者です。 Perlでスクリプトを書いてます。 うまく動かないのでerr_logファイルを見ると下記の内容になっています。 [error] (2)No such file or directory: exec of /home/***/***.cgi failed [error] [client **.**.**.**] Premature end of script headers: home/***/***.cgi これは何を意味しているのでしょうか?(何処が悪いのでしょうか)教えて下さい。

    • ベストアンサー
    • Perl
  • 一つのファイルだけにPremature end of script headers

    CGIが突然動かなくなりました。  昨日まで動いていたcgiファイルが突然表示されなくなりました。  ただ、動かなくなったのはある一つのファイルだけで、他のcgiファイルはきちんと表示されます。  原因はよくわからないのですが、あるソフトウェアをインストールしたらおかしくなって、それをアンインストールしたのですが、変化がありません。  コンソール上ではきちんと出力されます。  大事なファイルなので、きちんと表示させたいのですが、一日格闘しても駄目です。  ヘッダーも統一しているので、動くファイルのものを貼りつけたりしても駄目でした。  他のファイルもすべて駄目になったのであれば、原因はわかりやすいと思うのですが、特定のファイル一つだけというのはどうもよくわかりません。もしも、ご存知の方がいればどうか解決策を提案していただけますか。  ちなみに、エラーログはこのように表示されます。 [Sun Jul 22 12:56:50 2007] [error] [client 127.0.0.1] (2)No such file or directory: exec of '/html_files/cgi-bin/any.cgi' failed [Sun Jul 22 12:56:50 2007] [error] [client 127.0.0.1] Premature end of script headers: any.cgi  どうぞよろしくお願いします。

    • ベストアンサー
    • CGI
  • use

    OS(win xp)を入れなおして、 Active Perl をインストールしなおしたのですが、 use Benchmark; と書いたスクリプトをコマンドプロンプトで走らせると、 "use" not allowed in expression at log.cgi line 4, at end of line syntax error at log.cgi line 4, near "use Benchmark" Execution of log.cgi aborted due to compilation errors. とエラーが出ます。OSを入れなおす前もたしかActive Perlを普通にインストールし、普通にベンチマークとっていたと思うので、「あれ・・?」って感じです。/usr/local/lib/の中にもちゃんとBenchmark.pmが入っているようなのですが、なにがいけないのでしょうか。

    • ベストアンサー
    • Perl
  • CGIにおけるサーバへのファイル書込みについて

    [Mon Oct 16 16:27:12 2006] [error] [client 207.46.98.48] Premature end of script headers: prev.cgi [Mon Oct 16 16:27:13 2006] [error] [client 66.249.72.6] damy.dat Cannot Open at /home/e-fresh/public_html/prev.cgi line 71. サーバに上記のようなエラーログがありまして, ファイル作成&書込みができません。 私自身としては,サーバのフォルダに書込み権限が無い事が考えられます が,それをチェックする方法があれば併せてご教示願います。 prev.cgiの中身は下記の通りです。 $damy = 'damy.dat'; open DB,"$d_file" or die "$d_file オープン失敗"; open DAMY,">$damy" or die "$damy Cannot Open"; while (<DB>){            …} close DAMY; close DB; #ダミーファイルをデータファイルにリネーム rename($damy, $d_file) or die "Could not RENAME $damy TO $d_file";

  • CGIエラー

    アクセス解析のCGIを設置しようとしてるのですが、動作確認の際に、以下のエラーが出ます。 The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are: Can't locate config.pl in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .) at C:\daishin_www\cgi-bin\access\accview.cgi line 83. CGIを設置するのはこれが初めてなので、このエラー文が何を言いたいのか、どこを直せば動くようになるのか、ぜんぜんわからずに困っています。 どなたか教えて頂けませんか? サーバーは自社サーバーでWindowsです。

    • ベストアンサー
    • 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
  • 他のページを見ましたが「Premature end of script headers」について

    C++でCGIを記述しています。 「Premature end of script headers」がでてとれません。 サーバーにログインして、その環境でコンパイルを実施しています。 他のWebページも参照しましたが、「転送のモードが云々」とか、perlのパスが云々とか記述されていますが、関係ないと思っています。 ソースは ------ここから #include <stdio.h> main() { printf("Content-type: text/html\n\n"); printf("test"); } -----ここまで です。 text/htmlの後の改行を増やしたりtestの後に改行をつけたりtype:の後のスペースを取ったりいろいろしましたが、状況は変わりません。 何をどうすればよいのでしょうか。 なお、OSはFreeBSD 4です。

  • sledgeのセットアップ

    主題の件で質問です。cpanモジュールのロードエラーが度々発生し足りないモジュールを足しながら対処してきたのですが、下記のエラーの大元が分かりません。 Premature end of script headers: index.cgi Subroutine Sledge::Registrar::context redefined at Sledge/Pages/Base.pm line 79. No such file or directory at HelloWorld/Config.pm line 11. Can't locate object method "new" via package "Template" (perhaps you forgot to load "Template"?) at C:/xampp/Sledge-1.11/lib/Sledge/Template/TT.pm line 51. エラーは、apacheのerror.logです。

専門家に質問してみよう