• 締切済み

Active Perl の動作異常について

 Active Perl を Microsoft-IIS/5.0 on Windows 2000 Server SP4 の環境にインストールして使用しています。以前は、手動で導入した Active Perl を使用していたのですが、先月 5.8.8 をダウンロードしてインストールしました。  うまく動いたと思ったのですが、cgi が実行され出力されたページよく見てみると、出力内容にかならず 「Content-type: text/html」 などの文字が先頭に含まれてしまいます(たとえば、ウェブページの左上など)。困った事に、cgi によって合成出力される GIF 画像のバイナリデータにもこの文字列が含まれてしまうため、GIF 画像として認識されずに表示できなくなってしまいました。  ここ1ヶ月ほど調べたりして設定を見直してみたのですが、どうやっても直す方法がわかりませんでした。以前の古い Perl (バージョンは失念してしまいました…) の時はこのような事はなかったです。ただし、新しいアプリケーションが古い Active Perl では動かなかったので、ロールバックする事はできません。  cgi に対する 「アプリケーションの構成」 の 「アプリケーションのマッピング」 は 「~perlのパス\perlis.dll」が記載されていて、動詞は 「GET,HEAD,POST」が設定されています。その下のチェックボックス二つにもチェックは入っています。  どなたかご存知でしたら、お力をお貸しいただければと思います。

  • Perl
  • 回答数2
  • ありがとう数2

みんなの回答

回答No.2

試しにアプリケーションのマッピングを perlのパス\perlis.dll から perlのパス\perl.exe %s %s  (perl.exe半角スペース%s半角スペース%s <=sは必ず小文字で) に変えてから、IISを再起動したらどうなりますか? http://www.din.or.jp/~bigstone/cgilab/cgitips/iis.html 検索してみたら perlis.dllでは動くが perl.exe %s %sでは500errorになる と言う記事を見つけました。 ひょっとしたら、その場合はスクリプトにヘッダー出力を記述していないことが原因かもしれません だとすると、、、 ・perlis.dll=>ヘッダーは不要 ・perl.exe %s %s =>ヘッダーが必要 と言うことになり、おっしゃっているような現象になることが推測されますが?

saint-tail
質問者

お礼

 ありがとうございます。遅くなりました。海外出張で没頭していました。  試してみたところ、ご指摘のとおりエラーになってしまいます。スクリプトそのものは、単一のものではなく、違う作者さんの違うものを使用しており、また、以前は問題なく動いていた事から、スクリプトそのものにバグのようなコーディングミスがあるわけではないと思います。そのスクリプトを使ったサンプルサイトや他のサイトでは問題なく動いているようですし…。

回答No.1

IISの問題で無ければですが、 MIMEtypeヘッダよりも前に空行を出力しているとそうなりますけど? ありがちな例としてはヒアドキュメントで print << "HT_ML"; Content-type: text/html 中略 HT_ML こんな記述をしているとContent-type: text/htmlの前に空行を出力していますので そこでヘッダが終了とみなされ Content-type: text/htmlは本文と解釈されます

saint-tail
質問者

お礼

 ありがとうございます。  どこで質問していいかわからず、Perl 関連ということでこちらで質問させていただいたのですが、プログラム関連の場所なので間違っていたかもしれません。  今回私の動かしているのはすべてダウンロードしてきたフリーソフトのような CGI プログラムたちです。同じ作者さんなら、記述上の問題かもしれませんが、複数の作者さんの作品で同じ現象になってしまっています。また、Perl をバージョンアップする前はこの問題はおこっていませんでした。  Perl のプログラム本体が自作ではないのと、以前は問題ないこと、また他のサイトで同じものを使っている人が、同様の現象が起きていない事から、Active Perl のインストールや IIS の設定で何かがあるのかと思い質問をさせていただいたしだいです。  何かありましたら教えていただければと思います。よろしくお願いいたします。

関連するQ&A

  • Perlが動作しない?

    色んな所でお世話になってます。 皆様にはいつも親切にお答え下さって、本当に感謝しています。 今回、CGIを使ってやりたいことがあり、翔泳社から出版されている 『10日でおぼえるPERL/CGI 第2版』 という本を買ってきました。 が、インストール場所、apacheの設定、入力など、何も間違っていないのに、動作してくれません。 状況として、WEBページで開くと、txt(もちろん拡張子はcgiに変更してあります)の内容がそのまま出力されます。 本来ならばprintのダブルコーテーション内だけが出力されなければいけない筈(本の写真にはそう写ってる)なんですが、WEBページ(127.0.0.1)を開いても #! c:/perl/bin/perl print "Content-type: text/plain\n\n"; print "Hello Perl !"; と表示されるだけなんです。 apacheにはうまく接続できているので、問題はPERL.EXEの方だと思うのですが… 再インストールしてもムダな努力でした。 本の支持通りやってるつもりなので原因が思いつきません。 どこに原因があるのでしょうか? 可能性はたくさんあるんだと思いますが、可能な限り全て試してみますので、よろしくお願いします。

    • 締切済み
    • CGI
  • windows2003でcgiを動作させるには

    社内イントラネットを開設しようと思っています。 windows2003サーバにIISをインストール後、Perlをインストールしました。 が、htmlは見る事が出来るのですが、cgiが開けません。 cgiを開くと、エラーメッセージが出てきます CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers どのようにすれば、cgiが動作するのか、ご教授願います。 cgi・plファイルのマッピングから、IISの拡張機能での「許可」の設定もしてみましたが、できません。 *active perlをインストールした際、plファイルについては、マッピングが自動的にできていませんでした。拡張機能にもperl関係のものがなく、自分でネットを見て記入してみました。 ご教授、よろしくお願いします。

  • CGIを認識してくれなくなりました

    初めまして。cgi初心者です。 Windows2000+IIS(バージョン失念)+ActivePerl5.8.8でcgiを含むHPを作成しました。学内に閉じたNWで動かしています。 当初はなんの問題もなく動いていたのですが、先日久々に見てみるとcgiが動いていません(ソースがそのままブラウザ上に表示されます)。 ファイルが保存されているフォルダを見てみると.cgiファイルのアイコンがテキストになっていました。 IISのアプリケーションマッピングは.cgiで"C\***\perl.exe %s %s"になっています。 perlが壊れたのか?と思い、一度アンインストール→再インストールしてみたのですが、それでも駄目でした。 対処方法、そもそもこのようになった原因に思い当たることがありましたら教えていただけないでしょうか。

    • 締切済み
    • CGI
  • Mod_Perlについて

    こんばんは。Perlのほうとどちらに書き込むべきか迷ったのですが、こちらに・・・。 PerlでのCGIでシステム屋さんにあるシステムを作ってもらい運営を開始しました。 サーバー会社は海外のものを使っているのですが、メールやチャットでカスタマー・サービスとやり取りしているとMod_PerlとFast_CGIを使えば負荷が軽くなるから、必要なら無料でインストールしてあげるよ、と言ってくれています。 私はプログラマーでなく、あくまでビジネス側の人間なので、Mod_Perl、Fast_CGIと言われてもピンと来ないので調べて見ると Mod_Perlは CGIの負荷を減らし、スピードを速めるとありました。 また、その他の色々な説明を以下のページで 読みました。 http://d.hatena.ne.jp/keyword/mod_perl が、私にはあまりピンと来ません。 色々書かれていますが、サーバー会社が言うように、 Mod_Perlをサーバーにインストールして今用いているPerlで書かれたCGIプログラムをそのままMod_Perlに乗せたらいいだけなのでしょうか? それともシステム屋さんにもう一度連絡を取り、プログラム自体をいじらないといけない事もあるのでしょうか? またFast_CGIって何でしょうか? (こちらは検索してもいまひとつ分かりやすい説明が見つかりませんでした) 答えられる範囲だけでよいので回答頂けますと助かります。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • IIS6.0でCGIをを動作させる

    Windows 2003 Server、IIS6.0でCGIを動かしたいと思っています。 ActivePerl をインストールし、.cgiへのマッピングを設定して、.cgiファイル単体では動くようになりました。 しかし、プログラム中で.datファイル(掲示板での発言を記録するファイル)への書き込みがうまくいきません。 マッピングやMIMEの設定かと思い、いろいろやってみましたが、うまくいきませんでした。 設定の仕方をご存知の方教えてください。 よろしくお願いします。

  • An HTTPdでPerlを動かす

    An HTTPdとPerlでCGIを動かそうと思います。 PerlをD:\usr\binに、An HTTPdをD:\Httpdにインストールしました。 ドキュメントルートをD:\html_publicに設定しました。D:\html_publicにindex.htmlを置き、IEでhttp://127.0.0.1/とするとindex.htmlが表示されました。 続いてhello.cgiをD:\html_publicに置き、http://127.0.0.1/hello.cgiとしました。すると「Internet Explorer ではこのページは表示できません」との表示がでました。 Perlが認識されないのであれば、hello.cgiのコードが表示されるものではないでしょうか。 あるいはAn HTTPdでは指定された拡張子以外は認識されないのかもしれないと思い直しても、一応CGIに関しては、 .pl,.cgi D:\usr\bin\perl.exe で定義しています。 設定のどこに間違いがあるのでしょう。

    • ベストアンサー
    • CGI
  • Perlにこのようなことはできるのでしょうか

    質問させていただきます 最近ちょっとcgiに触れているのですが、perlには次のようなことは可能なのでしょうか 可能ならばもう少し勉強して実際にそういった動きをするcgiを作ってみたく思っています 1.テキストボックスにUrlを入力してもらう 2.送信ボタンが押されたらUrlを参照して対象のページの内容を見にゆき、 3.その中を文字列検索して欲しい情報を持ってきて、表示する cgiに「できること」は様々なページに載っていたのですが、「できないこと」はさすがに載っておらず 2.の部分ができるのかできないのかがよくわかっておりません cgiで可能なのかどうか、もし不可能ならばそういった動作を行うのによいのはどんな言語なのか というのをご返答いただければと思います。

  • Perl5.8について詳しく書かれている書籍

    最近Perl5.8にし、文字コードをUTF8をベースに使うようになりました。 以前は、5.6を使っていたので、文字コードについては、あまり意識せず、 出力時のみ気を使っていました。Perl5.8からPerlIOというものがあり、 いまいち理解しづらいのですが、PerlIOについて詳しく書かれている書籍(5.8以上に特化) を探しているのですが、お薦めがございました ら是非お教えください。 最悪、洋書でも構いません。 IO::Fileを使って、入力文字コードは euc-jpで、出力文字コードはシフトJISにする 設定方法がしりたいです。

    • ベストアンサー
    • Perl
  • プログラム実行中の待機ページを作りたいのですが方法がわかりません。

    プログラム実行中の待機ページを作りたいのですが方法がわかりません。 私はPerlを使ってCGIを作成しようとしています。 出力するHTMLページは3枚です。 1、フォーム入力をするページ 2、Perlプログラムが動いている間の待機ページ 3、結果出力ページ です。 1から得た情報をもとにPerlプログラムが動きます。ここはActionでページ移動します。 結果が出るまでにそこそこ時間がかかるので 2の待機ページにおいてGIF画像を出力し、暇を持て余さないようにします。 プログラムが終了すると3のページに移動し、結果を出力する。 というような仕様です。 このような事を実現できますか? どのようにすれば実現できるでしょうか? 実際に実現している人はいるのですが仕組みがわかりません。 わかりにくい説明で申し訳ありませんがどなたご教授頂ければと思います。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • cgiファイルのパス指定について

    http://www.kent-web.com/count/mgcount.html ここを見ながら今CGIカウンターの設置に挑戦しております。 環境はwindows7 32bit xammp v3.2.1をインストールしております。 一応簡単なCGIチェック動作はしており、動作する事は確認出来ております。 で、質問なのですが、 このような指示が上記サイトに記入してあったのですが、 public_html / index.html ... ここにカウンタを設置するものとする | | +-- mgcount / mgcount.cgi [705] ... カウンタ本体 | check.cgi [705] ... チェック用プログラム | init.cgi [604] ... 設定ファイル | +-- data / mpcount.dat [606] | +-- gif / 0.gif 1.gif .... 9.gif これってmgcountというフォルダとdataというフォルダとgifというフォルダは必要なのですよね? それとwindowsなのでパーミッションは関係ないですよね? それと、 #!/usr/local/bin/perl(プロバイダで定められたPerlへのパスを指定します) とありますが、わたしのxammpはc/xammp/perl/bin にperl.exeがあるので この場合のパスはどのように記載したら宜しいでしょうか? 宜しくお願いします。

    • ベストアンサー
    • CGI

専門家に質問してみよう