• 締切済み

CGIがうまく動作しません。原因不明です。

お世話になります。 http://apps.cside.com/ このサイトで配布されている「ThemeResMail」というCGIの動作テストをしています。 http://apps.cside.com/theme/tmresmail/ メールフォームCGIで、添付機能もついているのですが、フォームからファイルを添付して送信すると、確認メールにはファイルが添付されて届くのですが、管理者画面のメールログからはファイルの内容が確認できません。 具体的には、下記のようなエラーが出ます。 -> ファイルアクセスエラー。(内部エラー) -> 一時アップロードファイルの読込みに失敗しました。 管理画面からは、添付ファイルを画面上からダウンロードできるように説明されているのですが、上記のようなエラーが出てダウンロードできません。 またメール投稿の確認画面でも、添付した画像データを表示する事ができるようになっていますが、この投稿確認画面でも画像ふが表示される箇所が「×」マークになって表示されません。 配布されているスキン「求人募集スキン+」を、最低限必要な設定をしてからアップして、動作テストをしてもやはりうまく添付ファイルが表示されません。 管理者側に届く確認メールには、ちゃんとファイルが添付されて届きます。 http://apps.cside.com/theme/tmresmail/skin_haihu/ パーミッションの設定も複雑ではないので、間違っていないはずなのですが、なぜこのようなエラーがでるか原因不明です。 配布先も、一切サポートしないような記述があるので、メールをしても返信が返ってこない可能性が高いので、こちらにアドバイスを求める事にしました。 アドバイスをお願い致します。

  • CGI
  • 回答数2
  • ありがとう数3

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

すみませんちょっと間を空けてしまいました。 エラーメッセージの内容から判断すると if( $tmp_up_file->openTempFile() && $tmp_up_file->checkSessionID( $this->{'req'}->getParam("session") ) && $tmp_up_file->readFile( $this->{'req'}->getParam("key"), $file ) ) { か if( $tmp_up_file->openTempFile() && $tmp_up_file->readBoundaryByAdminMode() && $tmp_up_file->readFile( $this->{'req'}->getParam("key"), $file ) ) { の 判定でエラーが起こっていて、多分ファイルオープンで引っかかっているのだろうと 踏んだのですが違うみたいですね。 質問文を読み返すと管理者画面…とあるので後者の判定でしょうか。 とりあえずは原因を特定しないとどうにもできないので、 if( $tmp_up_file->openTempFile() && #$tmp_up_file->readBoundaryByAdminMode() && $tmp_up_file->readFile( $this->{'req'}->getParam("key"), $file ) ) { のように、チェックの一つをスルーしてみてください。 これでメッセージが出なくなればここでのチェックが 怪しいと絞れるのですが。

mintroll
質問者

お礼

ご回答ありがとうございます。 $tmp_up_file->readBoundaryByAdminMode() && は「AdminMode.pl」と「UpFileReader.pl」の2つのファイルで、同じ記述がありましたので、両方とも試してみました。 「AdminMode.pl」の方で、コメントアウトした場合、管理画面から「メールログ閲覧」を選択して、記事一覧が表示されるので、ログを閲覧したい記事をチェックしてからボタンを押すと、下記のようなエラーが出ます。 -------------------------------------- エラーリポート -> ファイルアクセスエラー。(内部エラー) -> 保存用添付ファイル「./data/f_20071126-1.cgi」の読込みに失敗しました。 次のボタン、またはブラウザのバックボタンで前の画面へお戻りください。  ひとつ前の画面へ  (←実際はボタンになっています) -------------------------------------- 次に「UpFileReader.pl」の方をコメントアウトしてみると、これまでと同様のエラーが表示されます。 メールフォームでデスクトップから画像ファイルを選択して、確認画面になると添付した画像も確認できるようになっているのですが、この確認画面の段階から画像が表示されません。 ですが、実際に管理者に届くメールには、添付された画像ファイルがちゃんと届いています。 添付されたファイルを、デスクトップに保存すれば問題なく画像は見る事ができます。 メールには添付して届くのに、WEB上では画像が表示されない状態になっています。 「data」ディレクトリには画像ファイルではありませんが、画像データと思われるログファイルは投稿ごとに作成されます。 やはりファイルオープンの段階で異常があるのかもしれません。 あと、管理者画面で投稿内容を閲覧する事ができるのですが、入力フォームに記入された内容や、チェックボックスやラジオボタンで選択された内容は、ちゃんと見る事ができます。 添付された画像だけが見る事ができない状況です。 お手数をおかけしますが、アドバイスをお願い致します。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

エラーメッセージはブラウザ画面に出てくるのですよね? であれば、UpFileReader.pl の44行目あたりと110行目あたりの #読む if( $tmp_up_file->openTempFile() && $tmp_up_file->checkSessionID( $this->{'req'}->getParam("session") ) && $tmp_up_file->readFile( $this->{'req'}->getParam("key"), $file ) ) { $tmp_up_file->closeTempFile(); } else { $this->{'ctl'}->displayErrorPage( ERROR_FILE, "一時アップロードファイルの読込みに失敗しました。$!" #文字列を修正 ); } #読む if( $tmp_up_file->openTempFile() && $tmp_up_file->readBoundaryByAdminMode() && $tmp_up_file->readFile( $this->{'req'}->getParam("key"), $file ) ) { $tmp_up_file->closeTempFile(); } else { $this->{'ctl'}->displayErrorPage( ERROR_FILE, "一時アップロードファイルの読込みに失敗しました。$!" #文字列を変更 ); } の二箇所を変更して、エラー発生時にエラーの原因を表示するようにして 原因を確認してください。

mintroll
質問者

お礼

ご回答ありがとうございます。 >エラーメッセージはブラウザ画面に出てくるのですよね? はい、仰る通りブラウザ画面に表示されます。 教えて頂いたように、エラーメッセージの箇所に「$!」を追加して、再度試してみましたが、表示されるエラーメッセージを変わりませんでした。 -> ファイルアクセスエラー。(内部エラー) -> 一時アップロードファイルの読込みに失敗しました。 上記のように表示されます。 ファイルを添付して送信が完了した後には、「data」ディレクトリの中に「f_20071124-1.cgi」というファイルができます。 このファイルの中をのぞいてみると、文字化けした文字列がならんでいます。 spo1iug61rlTQUtGV5grUeSX.824779713.1195905367.(ここにIPアドレスが入る) -----------------------------041084067364774 appufairu 1.jpg(←添付したファイル名) image/jpeg 以下文字化けした文字が続く サポート掲示板もないため、他の方も同じような症状が出ているのか分からず、私だけの症状なのかバグなのかも分かりません。 アドバイスをお願い致します。

関連するQ&A

  • CGIの500エラーの原因が分かりません

    お世話になります。 http://apps.cside.com/ このサイトで配布されている http://apps.cside.com/theme/tmresmail/ を設置してみました。 デフォルトの状態で設置して動作テストをしてみたのですが、フォームに入力して確認画面が出て、そこから送信ボタンを押すと500エラーが表示されます。 しかし、ブラウザの戻るボタンで確認画面に戻ってから、もう1度送信ボタンをすると送信完了の画面が表示されます。 cgiのパーミッションは間違っていないと思います。 1度エラーが出ても、1度戻ってからもう1度送信ボタンを押すと送信完了画面になるので、CGIは動作しているのですが、なぜか最初500エラーが表示されてしまいます。 このCGIは送信データを保存できる機能もついているのですが、フォームに入力して確認画面を出して、確認画面の送信ボタンを押したら500エラーが出るのですが、この時点でサーバ側には送信データが保存されています。 確認画面から送信完了画面の間で、何らかの要因でエラーになってしまっていると思います。 何が原因か分かるでしょうか。 レンタルしている2つのサーバで設置してテストをしてみましたが、両方とも同じ症状になります。 アドバイスをお願い致します。

    • 締切済み
    • CGI
  • CGI、スキンを探しています。

    ホームページの、日記に使うCGI、スキンを探しています。 ■装飾用の画像は少なめ、あまりごってりしていない、シンプルなもの ■文章と、画像もアップロードできるもの ■なるべくカスタマイズができるもの  (できればオンライン上でのカスタマイズじゃなく、  スキンファイルやCGIファイルをメモ帳などでいじれるものがいい) ■携帯からの画像添付メールも記事として受理できるもの  (携帯メールから、日記の書き込み可能) ■スキンの入れ替えが可能なもの、或いは、  そのCGIのスキンを配布しているサイトが多いもの ■記事検索、月ごとの表示、それぞれの日記記事に対し  閲覧者がコメントを書き込めるもの ■ブログ以外。 ■お絵かき掲示板(管理者のみお絵かきができる)とも連結できるもの 以上のようなCGIを探しているのですが、なかなか見つからず・・・ CGIは初心者ではないのである程度はいじれます。 が、設置方法の説明が分かりやすいとありがたいです。 以上よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGIメールフォーム設置 

    http://apps.cside.com/cgi/mail/smail/ メールフォームを設置したのですが、設置はできているとは思うのですが、メールフォームが表れず、 ーーーーーーーーーーーーーーーーーーーーーーーーーーーー エラー → Bad Request Method. 下記のボタンを押すか、ブラウザのバックボタンで戻れます。 【前の画面へ】(inputボタン) ーーーーーーーーーーーーーーーーーーーーーーーーーーーー とでます。 エラーの内容がよくわかりませんが、「Method」とあるので、上のURLのページの、 4).ファイルロック方法を確認  を元に $define->{'LOCK_METHOD'}= '1'; の部分の数字をいろいろと変更しますが、全く同様に表示されます。 (指示されている{'COLOR_CHART'}なども変更してみました) サポートがないので、こちらでお伺いしたいと思います。 どうすればよいかご教授ください。よろしくお願いします。

    • 締切済み
    • CGI
  • cgiが動作しないのは?

    サーバー移転でメールフォームのcgiを移動させたらcgiが動作しなくなりました。 パーミッション・perlのパス等は移転する前と同じ設定にしています。 メールの内容の確認ボタンをクリックすると、cgiが動作し確認画面へいくのが正しい動作なのですが、現状はメールの内容の確認ボタンをクリックするとcgiの内容が表示されてしまいます。 サーバー側の設定の問題なのでしょうか?

  • CGI設置

    AN HTTPDについて AN HTTPDで自宅サーバーのWebサーバーとして使っています。 そこでCGIを設置したくてhttp://www.activestate.com/activeperl/ をインストールしましたが、 編集PCのホームページビルダー11のプレビュー画面では メールフォームを設置したときに送信というボタンを押したらダウンロード画面になってしまいます。 http://IPアドレスからアクセスした場合はページが表示されませんと出ます。 どうしたらでなくなり送信ができるようになりますか? またsendmane.exeってのをしましたが、最終的にできませんでした。 CGIの編集では、一番上には、#!/usr/local/bin/perlのパスを入力しています。 メールフォームは配布サイトからダウンロードしたやつを使っています。送信ができそうでできない状態です・・。 http://apps.cside.com/cgi/mail/kisomail/ OS:WindowsXPSP3 クライアントPC&サーバーPCも同じ。 ご存知の方ご回答をよろしくお願いしますm(_)m

    • 締切済み
    • CGI
  • cgiのメールでファイルを添付したいが・・・

    cgi駆け出しで壁にぶつかり、お知恵を借りたく書き込みました。 間抜けな質問だとは重々承知なのですが、お願い致します。 現在sendmailでメールを送信するcgiを作成したのですが、更にファイルを添付できるようにし、メールを送信する機能を考えています。 ファイルを参照し、一度確認画面に添付するファイル名を表示させようと考えているのですが、確認画面を出すことで(それがテキストだとしても)、添付するためのファイルを一度サーバーにアップロードしなくてはならないでしょうか? いくらなんでも、フォームの参照で取得したファイル情報をcgiで一時的に保持するのは無理ですよね???

    • ベストアンサー
    • CGI
  • ロリポップでCGIを設置する

    ロリポップでCGIの設置をする方法を教えてください。 http://sala.estrella-azul.com/download/dll.html 此方のスクリプトを使って、ロリポップに掲示板を設置したいのですが、 どうしても上手くできません。 スキンを配布してるサイト様には、アップするだけで使えると書いていたので、 cgi等スクリプトのファイルとスキンのファイルを一つのフォルダにまとめてアップして、 ページを開いてみたのですが、403と表示されてしまいます。 WAF設定の所は無効にしているのですが…。 あと、パーミッションも指定の物にあわせました。 リンクは〇〇.cgiにつなげて良いのですよね?スキンの方をリンクするのでしょうか?? あと、CGIファイルの中身を書き換えたりしなきゃなのでしょうか?

    • 締切済み
    • CGI
  • CGIが途中で動作がおかしくなる?

    こんにちわ。 いつもお世話になっております。 現在、HP内にメールフォーム(CGI)を設置しております。 他のサーバーでは通常通り動作するのですが、今のサーバーでは処理が途中で止まってしまっている?みたいなんです。 CGI動作内容 HP上にて必要項目を入力、確認ボタンをクリック ↓ 確認画面が立ち上がり、送信ボタンをクリック ↓ 必要項目内に記入した返信用メールアドレスに送信内容確認メールの送信、 同時にCGI内で私(管理者)のアドレスに記入内容のメールを送信 最後の段階で、私の方にメールが届かないのです。(送信内容確認メールは届く) 他サーバーでテストしてみましたが、通常通り動くのでCGIの記入ミスは無いかと思います。 スクリプトのパスはサーバーの指定に従っています。 サーバー管理者に問合せてみましたが、CGIの内容に関してはサポートしていない、とのことです。。 私自身、CGIもPerlの知識も殆ど無い為、理由が分からないでいます。。 (メールフォーム用のCGIはサイトからダウンロードしたものです) 考えられる原因は何でしょうか? 出来れば早めにご回答頂きたいです。

    • ベストアンサー
    • CGI
  • 添付ファイルを送信できるCGIメールフォーム。

    文章と添付ファイルを送信できるCGIメールフォームを探しています。 レンタルではなく、CGIを配布しているサイトで、できれば無料が良いです。 デスクトップ壁紙などの大きなファイルも送信できるメールフォームが良いです。サーバーは2000MBありますので特に問題はないと思います。 オススメのがありましたら教えてください。

    • ベストアンサー
    • CGI
  • 移転したらCGIが動作しない。

    今まで、ホスティングサービスでNTTのWebARENA SUITE に加入し、ホームページを問題なく稼動していました。 ところが、故あって移転の憂き目に会いました。先週移転先と契約をしました。移転先はご存知LOLIPOPのサブドメインサービスです。これまでフォームメールCGI、カウンタCGIを使用していましたので移転にあたり、CGI本体、環境定義ファイル、関係するHTMLファイル、画像など全てをLOLIPOPにアップロードしました。パーミッションや転送モードはLOLIPOPが指定するものにし、確認もしました。 ところが実行するとカウンタは表示されませんし、フォームメールについては送信すると500errorという何が起きてもこのエラーという分類のエラーになります。 LOLIPOPサポートは外見的なチェックをしますが、よく分らないと言います。WebARENAは、当社サーバ内で動作保証をしている。という説明で終わっています。 このままではLOLIPOPに移転したメリットがありません。同じような経験をされたかた、あるいは技術的にアドバイスいただける方、よろしくお願いします。

専門家に質問してみよう