• ベストアンサー

Script Errorがでます。(過去ログ検索済)

これまでうまく動いていたcgiを新たに設置したのですが 下記のようなエラーがでます。 Script Error The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file. 使用しているサーバーはxreaです。 パーミッションは 設置cgi[755] にしております。 色々、過去ログをみたりぐぐってみたりしたのですが、 考えられる手はうってみたのですが、 他に考えられる原因は何かありますでしょうか?

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

  • ベストアンサー
  • mattalix
  • ベストアンサー率62% (47/75)
回答No.9

捕捉にあったURLからダウンロードしてみましたが、バージョンが違って書き方も変わっているようです。 > 2009-02-09 > サニタイジング処理を追加 とあるので、新しいものを使ったらどうですか

すると、全ての回答が全文表示されます。

その他の回答 (8)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.8

動作していたスクリプトが環境を変えると動作しなくなる原因は大きく2点考えられます。 1.設置操作ミス  ・FTPソフトのダウンロード・アップロード操作に起因する自動改行や文字コードの変化  ・パーミッション(CGIだけでなくCGI周りを含む)  対応策:   アップロードしたファイルに変化がないことを確認する   パーミッションの設定をひととおり確認する 2.実行環境が変わった。  ・CGI実行環境のサーバ側の仕様変更:システム(OSなど含む)、クライアントの実行権限、ファイルシステムなどなど  ・対象言語のバージョン変更  対応策:   「Hello World!」など単純なCGIで動作確認してみる。   FormMailソフト付属のチェックツール「check.cgi」で確認してみる。   CGIサーバアナライザ(futomi)などのツールで実行環境(権限・環境変数・モジュール)を把握し、アノニモス権限などを確認する。   べたなやり方ですが、くだんのCGIにトラップを仕掛けて実行してみてエラー内容を確認する    perlに「-c」「-w」「-d」などのオプションをつけて実行してみる    USEやREQUIREの直後に「print "Content-type: text/plain\n\n";」などを入れてエラーメッセージを画面に直接表示させてみる     →大体これで判明することは少ないので、要所要所に「print "here OK Line No.".__LINE__."\n";」などと入れて実行してみる   SSHが使えるようなのでHTTPのエラーログを探ってみる(TeraTermなど端末ソフトの経験がないならWinSCPなどを使って徘徊) 障害は「問題の切り分け」が基本です。 ピンポイントで探るのは場数を踏んできた経験則の多い方が自身で作業する場合のやり方です。 マクロな視点から切り分けながら問題点を探ってください。 仮に無駄な作業があっても自分のスキルアップにはなるかと思います。 大変ですが、がんばって下さい。

すると、全ての回答が全文表示されます。
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.7

> パーミッションは > 設置cgi[755] > にしております。 http://www.xrea.com/?action=spec には > ■推奨パーミッション > ・実行ファイル:0700(rwx------) 以上 > CGIは必ず正しいパーミッションで設置してください。 というちょっと意味不明な記述がありますが、承知の上の 755 でしょうか? # 経験則や一般論より、正規の説明書を優先しましょう。

すると、全ての回答が全文表示されます。
回答No.6

>No.5 > やはり同じエラーメッセージがでます・・・ Content-Typeヘッダを出して動かないなら、単に文法エラーがあるだけでしょう。 Windowsをお使いなら、PCにActivePerlなどをインストールして、 スタートメニューの「ファイル名を指定して実行」に"command"と入力してコマンドプロンプトを出し、 C:\>perl -c C:\path\send.cgi と入力してそのメッセージに従ってデバッグするしかないと思います。

参考URL:
http://www.synck.com/contents/download/support_bbs/
すると、全ての回答が全文表示されます。
回答No.5

・アスキーモードでアップロードされましたか? ・2行目に print "Content-Type: text/html\n\n"; と書いてみるとどうなりますか?

ritzkun
質問者

補足

回答ありがとうございます! 補足遅くなってしまい、申し訳ございません。 やはり同じエラーメッセージがでます・・・ send.cgiの中身の冒頭はこうなっています。 ***************************************************************** #!/usr/local/bin/perl←ここが1行目です。 print "Content-Type: text/html\n\n"; ←先ほどのん ## 2007-04-28 Ver.5.2 require 'jcode.pl'; #use Jcode; #server check (SPAM CHECK) $this_server = $ENV{'SERVER_NAME'}; #CGIソース内で設定する場合は下記に書きます。 #※HTMLで設定している場合無視されます。 $sendmail = '/usr/local/bin/perl'; @mailto = ('xx@xxxxxxxx.com'); ***************************************************************** ディレクトリの構成は public_html/xxxxx/.htaccess .htpassword index.html L/form/index.html send.cgi jcode.pl mailform.js L/postcode/←これは郵便番号のデータです。 わかりずらい文面かもわかりませんが、こんな構成にしてます。 念のため、.htaccess等が原因との過去ログでありましたので それも検証するため、一度削除してみたのですが、結果は同じでした・・・ どうかお力をお貸し下さい・・・・

すると、全ての回答が全文表示されます。
回答No.4

・アップロードするときにテキストモード(アスキーモード)でアップロードしていますか? ・「\」の記号が、バックスラッシュではなくUTF-8の\マークになっていませんか? ASCIIコードではバックスラッシュは0x00A0、円マークは0x005Cです。 1行目から2行目に以下を書いて実行してみて下さい。 #!/usr/local/bin/perl use CGI:Carp qw/fatalsToBrowser/; 違うエラーメッセージなどが出れば、それが原因です。

ritzkun
質問者

補足

回答ありがとうございます。 回答でいただいたように send.cgiの1行目から2行目にかけて #!/usr/bin/perl ↑これから   ↓これに #!/usr/local/bin/perl use CGI:Carp qw/fatalsToBrowser/; かえてみましたが、結果はエラーメッセージは同じでした・・・ ためしに、 #!/usr/local/bin/perl use CGI:Carp qw/fatalsToBrowser/; から「use CGI:Carp qw/fatalsToBrowser/;」をはぶき #!/usr/local/bin/perl で試してみたのですが、エラーメッセージは同じでした・・・ どうしたらいいでしょうか・・・

すると、全ての回答が全文表示されます。
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.3

> 「/usr/local/bin/perl」に変換したのですがやはりエラーは表示されるようです。 あ、ここは、/usr/local/bin/perl か /usr/bin/perl のいずれかが正解と決めつけるのは危険かも知れません。 XREA がPerlCGIを公式に許可しているなら、どこかにどう書くべきか説明があるはずです。 探してください。 これは、とてもとても大事です。 正しいと確証が持てない状況で他の事を調べても、無駄手間になりかねません。 他にも書く事はあるのですが、まずは 1行目の正解は何かをはっきりさせてくださいね。

ritzkun
質問者

補足

さっそくお返事ありがとうございます! http://www.xrea.com/?action=spec ここでみてみたのですが、 perl : /usr/bin/perl、/usr/local/bin/perl 上記のように記載されており、両方とも正解のようです・・・

すると、全ての回答が全文表示されます。
  • zxcv0000
  • ベストアンサー率56% (111/196)
回答No.2

エラーメッセージの > The script did not produce proper HTTP headers. がまずは重要です。 HTTP headers はこの場合レスポンスヘッダで、大抵は Content-Type: を含みます。 CGI は、これを最初に STDOUT に出力せねばなりません。 エラーメッセージは、それが無いと言っているのです。 よくある原因は... 1 1行目の誤り #! /usr/bin/perl か #! /usr/local/bin/perl かはサーバーにより正解が違います。 2 コンパイルエラー インストール済のモジュールが違う場合もコンパイルエラーになります。 Perl標準のモジュールも自分でインストールしたモジュールもともに容疑者です。 3 クラッシュ CGIがレスポンスヘッダの出力前にクラッシュしても、やはりこうなります。 XREA で可能かどうかは知りませんが、エラーログを見る事ができるなら重大なヒントが含まれてる可能性が高いです。

ritzkun
質問者

補足

>1 1行目の誤り >#! /usr/bin/perl か #! /usr/local/bin/perl かはサーバーにより正解 >が違います。 ここに関しては、もともと「 /usr/bin/perl」とあったものを 「/usr/local/bin/perl」に変換したのですがやはりエラーは表示されるようです。 2 コンパイルエラー インストール済のモジュールが違う場合もコンパイルエラーになります。 Perl標準のモジュールも自分でインストールしたモジュールもともに容疑者です。 3 クラッシュ CGIがレスポンスヘッダの出力前にクラッシュしても、やはりこうなります。 2,3に関しては、正直ちょっとわかりません。(難読なため・・・) 2に関しては、perlはもともとあったものを設置しております。 jcode.plとなっております。 特になにもいじっていません。 3に関しては、クラッシュしている場合はどうすればよいでしょうか? サーバー側に問題がある可能性もXREAの場合、否めない部分もありますので可能性としては、それも疑っています。 ただ、XREAではエラーログがみれないため、原因となるヒントがよくわかりません。 何か解決法があれば、教えてください。

すると、全ての回答が全文表示されます。
  • zyakkaru
  • ベストアンサー率15% (11/73)
回答No.1

>これまでうまく動いていたcgiを新たに設置した. 具体的にどんなCGIなのでしょうか? 例)KENTWebさんのノーマル掲示板 http://www.kent-web.com/ など 使用しているサーバーはxreaです。 うまく動いている方も、同じサーバですか? >考えられる手はうってみた 具体的になにをされたのでしょうか? >他に考えられる原因 上記の情報がなれば、他も何もありません。

ritzkun
質問者

補足

すいません、情報を追加いたします。 使用しているサーバは同じXREAです。 以前、使用していたウェブサイトをリニューアルするにあたり 問い合わせフォームだけ同じものを使用するためコピペして 使いました。 使っているのは http://www.synck.com/contents/download/cgi-perl/mailform.html を使っています。 今のところ、もともとサーバーにULした際に、パーミッションを変更することを忘れておりましたので 設置cgiを755に、設置ディレクトリを755に変更しました。 他には、現在サイトを制作中ですのでhtaccessとhtpasswordを設置しています。 設置場所は、public_html/直下で、index.html(トップページ)と同じディレクトリです。 その下に/form/としてのディレクトリを設置しており、この/form/ディレクトリ内にcgiを設置しています。 この、htaccess等が問題があるのかなと思い、削除してみたのですが やはりこのscript errorが表示されます・・・ 思いつく限り、補足してみましたが、また情報が足りない場合、 どういう情報を提示させていただけばよいか教えてください・・・

すると、全ての回答が全文表示されます。

関連するQ&A