• ベストアンサー

なんでサーバーエラー??

CGIをはじめて、まだまだ初心者です。 プログラムは、MS-DOSで構文チェックして、 OKとでるのに、サーバーエラーっておかしくないですか? もちろん、サーバは、自分のパソコンに アパッチいれて、Perlいれて確認するんですが、 何がエラーなんでしょう・・・? まだ、高級なCGIなど作れないので、 フリーのスクリプトをDLしてきました。 まず、構文チェックOK。 そして、Perl開いたまま、 ブラウザにアクセスします。 そうしたら、サーバーエラーとなるのです。 何を変えていったらいいのか教えて下さい。 (自分で作った簡単なアンケートフォーム とかは成功しました)

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

  • ベストアンサー
  • nak205
  • ベストアンサー率60% (40/66)
回答No.5

>プログラムは、MS-DOSで構文チェックして、 >OKとでるのに、サーバーエラーっておかしくないですか? いえ、いろんなところでエラーはでます。何らかの原因でスクリプトがとまってしまい、ブラウザに十分なヘッダーが送れなかったときにInternal Server Errorがでます。 エラーの特定にはApacheのエラーログも参考になります。が、Premature End of Scriptだと、特定は難しいです。 フリーのスクリプトをお使いとの事なので、多分ディレクトリやファイルの読み書き時のエラーには対処していると思います。この場合経験上多いのが、requireしているスクリプトが見つからないとかではないでしょうか? 何かrequireしているスクリプトがありますか?その時はまた補足でお知らせください。 #*********私の使うエラー箇所を見つける最後の手段************ print "Content-type: text/html\n\n"; print "ここまでOK"; exit; #*********************************************************** この3行をスクリプトの頭の方に置いて(もちろん#!/bin/perlの宣言文のあと)スクリプトをブラウザからたたき、ブラウザに“ここまでOK”が表示されたら、少し下の行間に挿入してたたき、またOKだったらまたずらしてたたき、というような地道な作業で見つけることはできます。慣れたら一番怪しいところから確認したり、スクリプトの後ろから始めたりもできます。 あまりにも地道なため、自分ではほんとに最後の手段にしてますが、これでエラーが見つからなかったことはありません。 いざとなったら、どうぞ。

peter8
質問者

お礼

お返事非常に遅くなってしまい、申し訳ありません。 しばらく、パソコンから遠ざかっていました。 CGIは、ややこしい。 結局、初歩的なミスなんですが、 スクリプトによっては、cgi-binに入れなくても動く ものや動かないものがあったのです。 これにはまいりました。 無精者ですが、これからもよろしくお願いします。

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

その他の回答 (4)

noname#225520
noname#225520
回答No.4

そのスクリプトが、書き込みをしくじったときのフォローをしているかどうかでしょう。スクリプトはロックディレクトリが無ければ作り、有れば何回かループして止まるはずです。作れなかったときのフォローができていなければサーバーエラーが出てもおかしくはないでしょう。そこいらをコメントアウトしてみてはいかが?

peter8
質問者

お礼

お返事非常に遅くなってしまい、申し訳ありません。 しばらく、パソコンから遠ざかっていました。 CGIは、ややこしい。 結局、初歩的なミスなんですが、 スクリプトによっては、cgi-binに入れなくても動く ものや動かないものがあったのです。 これにはまいりました。 無精者ですが、これからもよろしくお願いします。

すると、全ての回答が全文表示されます。
noname#225520
noname#225520
回答No.3

File Not FoundでもPermissionでもなければスクリプト・エラーでしょう。怪しい部分をコメントアウトしてみるのがいいでしょう。"@"にエスケープが必要だったりとか。(\@になる)あとはロックディレクトリの書き込みエラー、データファイルのパーミッションかも知れません。 いずれにせよ、ソースを見なければ何とも言えません。

peter8
質問者

補足

ロックディレクトリの書き込みエラーも 普通にサーバーエラーとなるのですか? 本には、windowsでは、ロックはだめとありました。 ロックしたままってことですよね。 エラーと言うことは? すなわち、サーバーエラーはひっくるめて 表示されるってことでしょうか?

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

サーバーエラーとは、Internal server Errorですよね。 構文も正しいとすれば、最初の一行目を確認してみてください。 大体は、 #!/usr/bin/perl #!/usr/local/bin/perl だと思いますが、公開するHPスペースのサーバー注意事項などに記載されていると思いますので、確認してみてください。

参考URL:
 
peter8
質問者

お礼

お返事非常に遅くなってしまい、申し訳ありません。 しばらく、パソコンから遠ざかっていました。 CGIは、ややこしい。 結局、初歩的なミスなんですが、 スクリプトによっては、cgi-binに入れなくても動く ものや動かないものがあったのです。 これにはまいりました。 無精者ですが、これからもよろしくお願いします。

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

自作はOKということは、フリースクリプトの実行の仕方に問題があると言うことだと思います。 ダウンロード元の注意書き等はきちんと読まれましたか? ブラウザからのアクセス時は「その他」からの実行になりますので、実行権のあたりが怪しいのではないかと思うのですが…。 またはログを書き込む様なスクリプトの場合はディレクトリの書き込み権限の可能性もあると思います。

peter8
質問者

お礼

お返事非常に遅くなってしまい、申し訳ありません。 しばらく、パソコンから遠ざかっていました。 CGIは、ややこしい。 結局、初歩的なミスなんですが、 スクリプトによっては、cgi-binに入れなくても動く ものや動かないものがあったのです。 これにはまいりました。 無精者ですが、これからもよろしくお願いします。

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

関連するQ&A