- ベストアンサー
これはサーバー側の設定?
お世話になります。 ろくにperlも書けない初心者です。 Flash(SWF)内でメールフォームを作っています。 丁度良いサンプルがあり、そのCGI(perl)をそのまま拝借。 テスト用(自前)のサーバーでは問題なく動作。 ところが実際に使用するサーバーに上げてみると動かないのです。 仕組みとしては、swfからgetURLで変数(送信元、送信先、メッセージなど)をcgiへPOST送信。 cgiは未記入のモノがあったらerror、埋まっていればOKの変数を返す。 (swf内のテキストボックスを受信用に空けています) その変数によって、飛ぶフレームを判断、「送信完了」「送信エラー」などを表示する。 といったモノです。 CGIの設置位置(perlへのパス、cgiへのパス)は確認しました。 パーミッションも確認済み。 何より、返り値の無い、HTMLを生成するタイプのCGIは動作しています。 さて、どうすれば上手く表示されるか分かりませんか? サーバーによってそういった違いってあるのでしょうか? 念のため、仕様は以下の通りです。 ウェブサーバーソフト(httpd) Apache1.3.22 Cコンパイラ gcc (ver2.8.1)/usr/local/bin/gcc OS Solaris2.6 SPARC版 利用可能なPerl Perl5 ( 5.005_03 ) よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
# No.2 です。 「CGI は動作している」と書いてあるので ActionScript の方に問題があるのではとのことで書いたのですが。 Flash から投げられる変数を CGI に URL から手動で投げてみて、(別にPOSTでもいいのですが。 ブラウザに変数が表示されるされるかどうかを確認してみてはどうでしょうか。 CGI が返す変数を確認したら原因が分かると思いますよ。
その他の回答 (2)
- duckling
- ベストアンサー率47% (88/185)
どう動かないのかがよく分からないのですが、 Flash + CGI がローカルで動いてサーバで動かない原因の一つとしては、 転送スピードに問題がある場合が多いです。 ローカルサーバでは瞬時に変数が返るので処理出来るのですが ネットを介しているので瞬時には返って来ず、 処理後に返事が返って来ても、Flashの方はすでに処理を終えている、 という状態です。 setInterval で function を数回呼び出して、 変数が返って来てから、次の処理をすれば問題ないと思います。 CgiCheckID = setInterval(Check,100); function Check(){ if(CGI_ANSWER != ""){ clearInterval(CgiCheckID); 次の動作........ (エラーを表示するとか、いろいろ) } } 試してみてくだされ。
補足
回答有り難うございます。 >どう動かないか FlashからCGIを叩いたとき、 CGIはエラーかどうか、変数を返します。 その変数の内容によって、どのフレームへ飛ぶかが変化するのですが、 待機中の状態から動かないんです。 つまりCGIから変数が代入されるのを待っている状態です。 また、テストで僕が借りているサーバーにアップしたときは上手くいっています。(ローカルではない、という意味です) そして、実際のサーバーの方では他のCGIは普通に動いています。 ところで回答いただいたのはActionScriptなのでしょうか? 試してみます。
- 7623goo
- ベストアンサー率46% (34/73)
こんにちわ。 GetURLではなくloadVariablesを使う方法はだめでしょうか? CGIからの変数の返し方のところをもう少し 詳しく書いていただけるとわかるかもしれません。
補足
あ~、力一杯間違いました。(汗 そう、loadVariablesNumです。 というかActionScriptが原因とは思えないんですよね。 実際、テストサーバー(要するに自前)で動作確認は出来てますから。 念のため参考にした(Flashの)サンプルはこれです。 http://www.game3rd.com/flash/f4/expert/mail/ よろしくお願いします。
お礼
返事が遅れて申し訳ないです。 別の仕事の締め切りに追われてまして...(汗 ちょっと中途半端で申し訳ないですが、 一旦、締め切ります。 (でないと返事が遅れる一方なので) お二方に頂いたアドバイスを元にちょっと頑張ってみます。 どうしても駄目だったときは、またお世話になります。 有り難うございました。