よろしくご教授下さい。
単純にフォームに入力された内容を確認するためのページを作成しようとしていますが、
ローカルでのテストはOKでしたが、いざサーバにアップするとサーバエラーが出ます。
ローカルのテスト環境
サーバ AnHTTP
ActivePerl Ver.5
本サーバの環境
Apache
Perlのバージョン 5.6.0
パーミッションは755に変更済み。
PerlのパスもOKです。
あと、考えられるエラーの可能性をご指摘頂けませんでしょうか?
よろしくお願いします。
説明不足なとこがありましたら補足致します。
参考にならないかもしれませんが、一応・・・
サーバエラーの内容です。↓
Internal Server Error
The server encountered an internal error or misconfiguration and
was unable to complete your request.
Please contact the server administrator, *******@*******.com and
inform them of the time the error occurred,
and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
-----------------------------------------------------------
Apache/1.3.19 Server at www.********.com Port**
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
> エラーの内容は以下のものです。
> Premature end of script headers
これは、HTTP ヘッダの出力が無い、ということを表します。
たとえば、以下のような意味の無いスクリプトを動かすと、同様のエラーが出ま
す。
★ここから
#! env perl
exit
★ここまで
該当のスクリプトがどこかの print で Content-type: text/html なんて吐き出
していると思うのですが、そこに到達する前に何かのエラーで抜けています。
ですから、質問にあるように
・スクリプトのパーミッションは問題ない
・perl のパスもOK
です。
エラーログの "Premeture end ..." の直前の行に注目するか、もしくは、スクリ
プトのう~んと最初のところで HTTP ヘッダだけを出力してしまえば、何かの情
報がエラーログに残るかもしれませんね。
後、コマンドラインから、そのスクリプトは実行できませんか?
繰り返しますが、少なくとも CGI でスクリプトを動かすための設定には問題ない
と思います。実行している、そのスクリプト自身の問題だと思います。
ちなみに、
> また、ご気分を害されたようで、そのような返答(お礼)をしてしまい申し訳ございませんでした。
ぜんぜん気分は害してませんよ。ちょっと書き方がぶっきらぼうだったかも、と、
ちょっと反省。
a-kuma様
締め切り後にも関わらず回答頂き有難うございます。
先ほど原因がわかりました。
一行目のPerlのパスが違っておりました。
サーバ側からメールにより指定されたパス自体が間違っていたようで、
こちらからの指摘により、先ほどサーバ側からの訂正がありました。
正しくは
#!/usr/local/bin/perl
と記述するべき所を
#!usr/local/bin/perl
としていました。
(すぐに気付かなかった私もいけないのですが。。)
2回も回答していただきましたのに、
原因がこのような簡単な事でなんだか申し訳ありません。
こちらで頂きました皆様の回答は、
今後Perl・CGIの勉強をする上で参考にさせて頂きたいと思います。
a-kuma様 他の回答者の方々
お時間を割いて回答頂きました事本当に感謝しております。
ありがとうございました。
このサイトでまたいつか出会える事を願っています。
No.5
- 回答日時:
> エラーログ見ました。
> File does not exist(ファイルが存在しません)
(snip)
> エラーログの見方がよくわからなくて・・・
いや、そうじゃなくて「ファイルが無い」とか分かる言葉で書いてあるのですから
その問題をクリアしなきゃいけないんじゃないですか?
まずは、分からないなどとひいてないで、きちんとエラーログを読み、そのうち
問題の大元であるメッセージをここに載せてみたら?
四人がこの質問に首を突っ込んでいるのですから、エラーの内容次第では、もう少し
まともな回答を誰かしてくれるかも。
有難うございます。
また、ご気分を害されたようで、そのような返答(お礼)をしてしまい申し訳ございませんでした。
午前の時点では、エラーログを「見た」だけで
早くお返事をしようと思ってしまいまして、、、
本日午前中の間、エラーログの見方を調べたり
サーバの管理会社への問い合わせをしておりました。
エラーの内容は以下のものです。
Premature end of script headers
a-kumaさんへの最初のお礼の所で30行ほどと言ったのは、
過去分のエラーも合わせて見ていたようです。
また、ページが存在しないというのも関係ないもののようでした。
もう少し考えてからここへお願いしたらよかったのでしょうが、
業務上時間が無くてついあせってしまいました。
また、他のトラブルも抱えていた為、粗雑な質問とお返事になりました事
他の3人の回答者の方にも深くお詫びいたします。
No.4
- 回答日時:
つい最近わかったことですが、改行コードが(13)(10)、つまりCRLFだと、ApacheのMod_perlはただしく解釈できないみたいです。
ターミナル上では実行できてるのに、サーバーを通すとできないので何かと思ったら、そんなことでした。
もしこれが原因なら、秀丸などで改行コードをLFのみにすると、もしかしたら動くかもしれません。
回答ありがとうございます。
改行コードはフリーソフトのPerlEditorを使ってPerlを記述している際に
設定でUNIX:EUC(LF)にしていますので、問題はないと思います。
もう一度確認してみます。
ありがとうございました。
No.3
- 回答日時:
とまあ、そうは言っていても何なんで・・・
ローカルのテスト環境は明らかにWindowsですね。
本サーバの方は、UNIXっぽい感じもしますが、プロバイダのサーバなのでしょうか。
そういう前提だと仮定して、ありそうなケースを上げてみます。
ソースコードの改行コードです。
Perl自体は、CRもLFもCR/LFも改行コードとして扱う事ができますが、CGIとして動かす場合少し違う事情が絡んできます。
パールに限らず、スクリプト言語を用いて作成したコードは、最初の一行に#!~という記述を書きます。
おまじないのように書いているこの行は、マジックナンバーと呼ばれる特殊な行です。
実行属性のついたスクリプトの1行目は、OSによって解釈され、そこに書かれたインタプリタが呼び出されます。
つまり今回の場合も、最初の1行はOSによって解釈されるわけです。
とすると、改行コードはOSによって識別できるものでなくてはならず、UNIXの場合はLFとなります。
Winでは、CR/LFである為、例えばスクリプトをサーバにあげる際に、ftpをバイナリモードで転送していたりすると、ASCIIモードなら勝手にやってくれる改行コードの変換が行われず、うまく動かないというケースは結構多いです。
まあ、当たっているかどうかは分かりませんが、典型的なケースの紹介でした。
参考URL:http://tohoho.wakusei.ne.jp/wwwxx011.htm
回答有難うございました。
>ローカルのテスト環境は明らかにWindowsですね。
>本サーバの方は、UNIXっぽい感じもしますが、プロバイダのサーバなのでしょうか。
説明が足らずに申し訳ありませんでした。
ローカルのテスト環境はWindouws2000
サーバはUNIX です。
しかし、改行コードは
フリーソフトのPerlEditorを使ってPerlを記述している際に設定でUNIX:EUC(LF)にしていますので、問題はないと思います。。。
FTPはFFFTPを使用してアスキーモードでUPしています。。。
ありがとうございました。
No.2
- 回答日時:
エラーログの内容がないと考えられる可能性はいろいろあり過ぎて誰も答えられないと思います。
ISP等のレンタルスペースを使用していて、直接エラーログを見れない場合、スクリプトの先頭の方で
use CGI::Carp qw(fatalsToBrowser);
と、しておくと、エラーの内容をブラウザに返してくれるので、とても助かります。
>参考にならないかもしれませんが、一応・・・
>サーバエラーの内容です。↓
これは「エラーが出た」としか分かりません。(^^;
参考URL:http://member.nifty.ne.jp/hippo2000/perltips/CGI …
回答ありがとうございます。
>ISP等のレンタルスペースを使用していて、直接エラーログを見れない場合、スクリプトの先頭の方で
>use CGI::Carp qw(fatalsToBrowser);
>と、しておくと、エラーの内容をブラウザに返してくれるので、とても助かります。
この方法は知っていると役に立ちそうです。
>>参考にならないかもしれませんが、一応・・・
>>サーバエラーの内容です。↓
>これは「エラーが出た」としか分かりません。(^^;
・・・すみません(-_-;)
うまい具合に質問も出来ていない自分が情けないです。。。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- YouTube youtubeからの著作権メールについて 2 2023/02/14 16:12
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- 英語 英文の添削をお願いします 4 2023/05/23 11:10
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- その他(SNS・コミュニケーションサービス) 自分のpcがハッキングされたようなメールが来たのですがどうすればいいですか? 4 2022/10/02 16:14
- その他(SNS・コミュニケーションサービス) 爆サイやっていたら、下のような文字が出ました! これは何なのでしょうか? nginx error! 1 2023/06/09 12:27
- 英語 この英文は平易な反面格調高いですか? 1 2023/01/15 12:04
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlでactive directoryに登録
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAで、ユーザーフォーム...
-
VBでグローバル変数を宣言するには
-
Excel VBA 『Call』で呼び出す...
-
ベースモジュールって?
-
'Range'メソッドは失敗しました
-
VBSがコンパイルエラーになりま...
-
モジュールからフォームのボタ...
-
LCD ディスプレイを Raspberry ...
-
大量の標準モジュールを解放す...
-
Ctrl+Vのキーストロークを合成...
-
perlをバージョンアップしたら...
-
モジュールの最大数はいくつな...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBAで、ユーザーフォー...
-
Excel VBA でのAPI呼び出しが・...
-
【vba】フォームに書いてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー
-
perlスクリプト s/^\\s+//; ...
-
Perl 教えてください。
-
$com::VDの意味がわかりません
-
perlでランダムな文字列を作りたい
-
ActivePerl 1行入力で 'と"が...
-
Image::Magickの使い方を教えて...
-
windowsXP上で動作する最新版の...
-
例外処理のフローチャートの記...
-
Excel VBAでリンク切れをチェッ...
-
LCD ディスプレイを Raspberry ...
-
VBSがコンパイルエラーになりま...
-
Excel VBAで、ユーザーフォーム...
-
「デバイスは PRN を初期化でき...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBA 『Call』で呼び出す...
-
エクセルVBAでシートモジュール...
-
VBAで別モジュールへの変数の受...
-
モジュールの最大数はいくつな...
-
VBでグローバル変数を宣言するには
おすすめ情報