CGIでフォームメールを作ったのですが、1回目だけサーバエラーが起こるとの指摘を受けました。
私の方でもローカルとサーバにアップしてからもCGIのテストは行ったのですが、ローカルで動かした後だったからか、1度もエラーは表示されず、原因が分かりません。
エラーが出た後、いったんブラウザを閉じてもう一度開き直すと動作するようです。
これの対処法をご存じの方、教えていただけますでしょうか。

A 回答 (1件)

CGIの仕様がわからないのでなんとも言えないのですが、一回目がエラーで、二回目にエラーが起きないというのは、基本的にセッションの概念のないCGIでは不思議な現象ですよね。


もしかして、2重投稿防止の機能がついていて、そこで何かエラーがおきているとかですか?
せめて、どういうCGIで、どんなサーバエラーなのか、ウェブサーバのエラーログにはどういうものが残っているのか教えていただかないと。。。。

この回答への補足

Perlのパスの問題じゃないかといわれ、確かにパスが間違っていたのでそれを直したら、エラーが出なくなったと言われました。でも、自分のPC以外じゃないと確認しようがないので、ホントにエラーが出なくなってるのかも分かりません。
エラーの状態は500サーバーエラーのようです。これ以外は分からないので、問題のCGIのURL載せておきます。http://komenuka.yonet.jp/

補足日時:2002/03/30 01:16
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> 一回目がエラーで、二回目にエラーが起きないというのは、基本的にセッションの概念のないCGIでは不思議な現象ですよね。

そうなんです。私もこの症状は初めてなのでとまどっています。
何か思いつく点などありましたら、教えてください。よろしくお願いします。

お礼日時:2002/03/30 01:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q特定CGI「だけ」が、ローカル環境で実行できない原因について。(POSTでのフォーム送信はローカル実行不可?)

こんばんは。

サーバでは問題なく動くCGI(Perl)が
ローカルPC環境で動きません。
ローカルのHTMLファイルから呼び出すと
CGIファイルがテキストとして表示されます。

しかし、パス関係の間違いはありません。
動かないCGIファイルを「print "Hello!";」などの
単純な文章に書き換え、同じHTMLから呼ぶと動きます。

また、「Perl文法チェックサイト」で
チェックしても、文法間違いはありません。
ほかにどういった原因が考えられますでしょうか?

----------------------------------------
なお、ローカルのHTMLでは
「form」にラジオボタンを配置、
「submit」で「POST」送信したうえで
その結果によってHTMLを生成出力するようにしています。

ここらへん、まったくよく分かっていないのですが
もしかして、こういう送信はローカルでは
実行できないとかあるのでしょうか?
送信部分を削って、HTML出力だけのCGIにすると動きます。

繰り返しますがサーバ上では動作しています。
よろしくお願いいたします。

----------------------------------------
◆環境◆ WindowsXP IE6.01 httpd 1.42m 
ActivePerl(バージョンの見方が分かりません)

こんばんは。

サーバでは問題なく動くCGI(Perl)が
ローカルPC環境で動きません。
ローカルのHTMLファイルから呼び出すと
CGIファイルがテキストとして表示されます。

しかし、パス関係の間違いはありません。
動かないCGIファイルを「print "Hello!";」などの
単純な文章に書き換え、同じHTMLから呼ぶと動きます。

また、「Perl文法チェックサイト」で
チェックしても、文法間違いはありません。
ほかにどういった原因が考えられますでしょうか?

----------------------------------------
...続きを読む

Aベストアンサー

><form action="http://127.0.0.1/~***/***/cgi-bin/test03.cgi">としたら動く

よくある勘違いだと思うけど、formを記述しているファイルもローカルサーバー経由
(http://127.0.0.1/~***/***/xx.htmlなど)で呼び出してないと、
単なる、ファイル表示では、file:///d:/xxx..../xx.html というアドレスになり、
相対アドレス指定では、file:///d:/xxx..../test03.cgiを呼び出すことになるのでテキスト表示になってしまいます。

Q特定海外サーバでの、CGIエラー

日本でdownloadしたメールフォームが、ある特定の海外サーバで動きません。(Godaddyという会社です)perlのパスも、SSLのパスも、ちゃんと確認しました。本文にprint "Content-type: text/html; charset=Shift_JIS\n\n";も、付け加えて文字コードの設定もしてあります。permissionも何回も変えて確認しています。ほかのサーバでは、ちゃんと動いてくれます。なぜでしょう。もし、思いつく設定変更などありましたら、ご伝授いただけるとうれしいです。

Aベストアンサー

jcode.plが無いと言っています。
cgiファイルと同じ場所へjcode.plをアップロードすれば動くかと。

Qローカルではうまくいってたのに、サーバにあげるとエラーになります、これってどうして?

 自分のPC上では、うまく作動していたのに、サーバにアップしてみるとエラーがでてきます。これってなぜなんでしょうか?
 perlの書き方を変えると動くって聞いた事があります。それってなぜでしょうか。
また、書き換えるコマンド、関数ってだいたい決まってると思うんですが、どういうコマンドが引っかかるんでしょうか?
 困ってます。

Aベストアンサー

CSVファイルのパーミッションを666にしてみてはどうですか?
644でも動くと思うので、期待薄ではありますが・・・・
どれも、間違っていないとなると厄介ですね。

絶対に動く!スクリプトを一つ組んで、アップロードして
稼動するか確認してみたらどうですか?
それを設定して、動けばプログラム中のコマンドが引っかかっている事になりますし、動かなければ、サーバーの設定に間違いがあると言う事になります。

絶対に動くスクリプトをサンプルで載せておきます。
必要な部分を書き換えてやってみてください。

あと、CGIがリードする、CSVファイルは必ずありますか?
もし、無かったら、ファイルオープン時にエラーになりますよ。(書込みは自動生成される)


********サンプル*******
#!/usr/bin/perl

require 'cgi-lib.pl';

######ファイルオープンチェック#####このブロックは消しても良い

open (FILE,"ファイル名");
flock(FILE,2);

flock(FILE,8);
close(FILE);
#######################################
print "Content-type: text/html\n\n";
print <<"EOF";

<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<TITLE>絶対に動く!</TITLE>
</HEAD>
<BODY>
動いたよ!
</BODY>
</HTML>
EOF
exit ;

CSVファイルのパーミッションを666にしてみてはどうですか?
644でも動くと思うので、期待薄ではありますが・・・・
どれも、間違っていないとなると厄介ですね。

絶対に動く!スクリプトを一つ組んで、アップロードして
稼動するか確認してみたらどうですか?
それを設定して、動けばプログラム中のコマンドが引っかかっている事になりますし、動かなければ、サーバーの設定に間違いがあると言う事になります。

絶対に動くスクリプトをサンプルで載せておきます。
必要な部分を書き換えてやってみてく...続きを読む

QCGIへのアクセスが集中した場合にアクセスを一時的に制限したり、エラーメッセージを表示したり、予備のCGIに飛ばす方法。

CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。

また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。
例えば、Aサーバのmain.cgiを動作させたい場合に、まずBサーバのpre.cgiにとばし、Bサーバのpre.cgiからAサーバのmain.cgiへのアクセスを試み、Aサーバがダウンしている為にアクセスに失敗した場合に、Bサーバ内のerroor.htmやsub.cgiに飛ばすことなどはできるのでしょうか。

できれば、CGI(perl)で実現したいのですが、有効な方法がございましたら、恐れ入りますが、教えていただけないでしょうか。もしも可能でしたら、簡単なサンプルのスクリプト等を添えていただけると大変助かります。何卒よろしくお願いいたします。

CGIへのアクセスが集中した場合に、メッセージを表示し、アクセスを制限するサイトなどを目にしますが、どのようにして実現しているのでしょうか。例えば、flockなどの排他処理によって、一定時間内は1ユーザーからのアクセスしか受け付けないといった処理は可能かと思いますが、3ユーザーまでのアクセスのみ受け付けるといった方法はあるのでしょうか。

また、サーバダウンなどにより、CGIが動作しない場合に、エラーメッセージを表示したり、予備のCGIに飛ばす方法はありますでしょうか。
例えば、Aサー...続きを読む

Aベストアンサー

>、FastCGIやmod_perlというのはどのようなものでしょうか。

Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。
↓本家
http://www.fastcgi.com/
http://perl.apache.org/

WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。
レンタルサーバの中には、使えるところもあるらしいですよ。

>大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか

ないと思います。(^^;
というか、Aサーバ上に常駐(Unixならcronか)させたプログラムに、定期的にBサーバに通知させようと考えたわけですが、サンプルのようなものはどこかにあるのかもしれませんけど、見つけるのは大変でしょう。

いずれにしても、BサーバのCGIでAサーバの状態を取得し、その後AサーバのCGIを呼び出すのだとすると、今度はBサーバの負荷が高くなります。
負荷を軽減したり、サーバダウンした場合の対処方法として色々講じようとするのも良いのですが、あまり色々考えすぎると、返って別の部分で負荷が高くなったり、広げすぎて収拾がつかなくなったりするものです。
個々のCGIの処理を軽くするようにするなど、CGI側の工夫で回避できる部分は多いので、そちらがまず先かと思います。(余分な処理をさせない、より速いアルゴリズムを選ぶ、2度の処理に分けられるなら2つのCGIに分け2ステップで処理するetc)

>、FastCGIやmod_perlというのはどのようなものでしょうか。

Googleあたりで調べれば、かなりヒットするので、まずは調べてみて下さい。。。
↓本家
http://www.fastcgi.com/
http://perl.apache.org/

WWWサーバに組み込む形になるので、独自サーバじゃないと使えませんけど。
レンタルサーバの中には、使えるところもあるらしいですよ。

>大変申し訳ございませんが、参考URLやサンプルなどご存知ないでしょうか

ないと思います。(^^;
というか、Aサーバ上に常駐(Unixならcronか)させたプログラ...続きを読む

Q問い合わせフォームを作成したいのですが、フリーCGIでデザイン等ののカスタムが出来るものをご存じないでしょうか?

初めまして。
現在持っているホームページに自作で問い合わせフォームの作成を考えております。

ただ、簡単なHTMLなどは理解できますが、詳しいプログラムの種類やデータベースについては全くの初心者です。

そこで、フリーのCGIでの導入を考慮中です。
デザインの変更やテキストボックス・セレクトボックスの項目などもカスタムの可能な素材をご存じの方がいらっしゃいましたら、教えて頂ければ幸いです。


宜しくお願い致します。

Aベストアンサー

HTMLが問題ないのであれば
デザインやフォームはHTMLで作成し
受け渡し先のcgiを設置するのが一番簡単だと思います。

参考URLにオススメのものを記載します。

参考URL:http://www.kent-web.com/data/postmail.html


このカテゴリの人気Q&Aランキング

おすすめ情報