• ベストアンサー

特定のCGIだけ、作動するかわりにダウンロードされてしまいます

いつもお世話になります。 今日、カウンタのCGIと、そのカウンタをセッティングするCGIを二つのサーバに設置したのですが、片方のサーバに設置したセッティングCGIがおかしいんです。 本当ならアクセスするとパスワードを求める画面になるはずですが、「次の場所からダウンロードするように選択しました」という、Windowsではおなじみのダイアログが現れて、そのパスワードを入れるページ自体をダウンロードすることになってしまいます。 ここで「ダウンロード」にせずに「上記の場所から開く」にすればパスワード入力画面は開くのですが、これはローカルディスク上で開いていることになりますから、もちろんCGIとしては作動してくれません。 しかし、こんな現象が発生してしまうのはWin98やWin MEでアクセスした場合で、Macでアクセスすると正常にパスワードを求めてきて、もちろんそのまま認証してカウンタのメンテができます。 また、このWinで正常に作動しないのは2つのサーバに設置した内の片方だけで、全く同じものを全く同じ名前とセッティングでアップしてある、もう一つのサーバ上のCGIはMacでアクセスしようがWinでアクセスしようが正常に作動するのです。 しかも、異常がある方のCGIと同じディレクトリにアップしてある、他のCGIは全て正常に作動するのです。 パーミッションの設定も、CGIは755、ログは666と、間違っていないことを確認してあります。 perlへのパスも、Macでなら動くことでもおわかりのように、間違っていません。 尚、このCGIはDOS-Vの改行コードで記述してあります。 どなたかこの異常の原因がおわかりの方はいらっしゃいませんでしょうか? どうか解決のためのアドバイスをお願いいたします。

  • chack
  • お礼率100% (283/283)
  • CGI
  • 回答数4
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • aton
  • ベストアンサー率47% (160/334)
回答No.3

 CGIスクリプトそのものではなく,その出力がダウンロードされてくるんですよね。だとすると,一番怪しいのはMIMEタイプ設定なのですが…(MIMEタイプについては,参考URLをご覧ください)。  ダウンロードされるファイルがなんというMIMEタイプとして認識されているか,判らないでしょうか?  Mozilla(おそらく Netscape 6.1 も)などであれば,ダウンロードダイアログに「~ xxxx/yyyy タイプのファイルをダウンロード後~」というように,ダウンロードしようとしているファイルのMIMEタイプが出力されるのですが,IEではどうやればいいのか私は知らないので…。  そのMIMEタイプがわかれば,なぜダウンロードされてしまうのかという原因究明の手がかりになると思うので,できれば調べてみてください。  または,そのCGIスクリプトのなかで,"Content-type: xxxx/yyyy" という文字列を出力しているところがあれば,それがそのMIMEタイプなのですが…。そこによけいな文字(見えない文字~例えば全角空白など~という可能性もあります)が入ってないか,あるいは設定されていないということがないか,調べてみてください。  Macでちゃんと動くのは,ブラウザー側でそのMIMEタイプをどう扱うかがきちんと設定されている,あるいは(こちらの方が可能性は高いのですが)MIMEタイプ判別をルーズに行っている(例えばMIMEタイプの判らないテキストファイルは text/html として扱う),などの理由からではないかと思います。

参考URL:
http://home.tripod.co.jp/help/building/file_mime.html
chack
質問者

お礼

どうもお騒がせいたしました。 atonさんが"Content-type: xxxx/yyyy"という部分を指摘して下さったおかげで、CGIを作った方のタイプミスだということが判明し、解決に至りました。 これから作者の方にも連絡しようと思います。 どうもお世話になりました!

chack
質問者

補足

コメントと参考URLをどうもありがとうございました。 そうなんですか。CGIの中にそういう記述部があるとは知りませんでした。 なるほど!ネスケだとタイプを教えてくれますね。 ダウンロードしようとしているファイルタイプは、application/x-httpd-cgiであると言って来ています。 あれ?CGIの中には「text/html」と記述されているんですが…? 詳しくは、    .    .    . # # HTML文書定型部表示ルーチン # sub header { print <<"HTML"; Conyent-type: text/html <HTML> <HEAD> <TITLE>Control room</TITLE> <META http-equiv="Content-type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY bgcolor="#f1f1f1" text="#000000" link="#0000E3" vlink="#008080">    .    .    . と続きます。 いかがでしょうか? ところで、NetscapeならMIMEタイプが判ると教えて頂いたおかげで、もう一つ発見がありました。 正常と思われていた方のCGIも、Netscapeでアクセスすると出力結果のHTMLソース自体がブラウザに表示されてしまい、やはりパスワード認証は出来ないことが判りました。 これは、やはりCGIの構造の問題でしょうか? 作者の方がアップしていらっしゃるサンプルのページは、MacでもWinでも、IEでもNCでも正常に動いてしまうんで、私の詳細設定法が悪いのかと思い、作者の方がアップされた圧縮ファイルを解凍したそのままのものを私のサーバにアップしてみた(偶然、perlのパスは書き替える必要がなかったので)のですが、それでもやはりダウンロードが始まってしまったりソースが表示されてしまう現象は変わりませんでした。 私の方に問題があるのかと思ってこちらで質問させていただいたのですが、もしかしてこれはCGIの作者の方に質問すべき内容なのでしょうか? う~ん、面倒な問題にお付き合いいただいて申し訳ありません。この結果に対する更なるご意見を伺えればありがたいのですが…

その他の回答 (3)

  • makito
  • ベストアンサー率21% (3/14)
回答No.4

見た瞬間、ちょっと笑ってしまいました。 もし下の補足が、コピペだとしたら、コレが原因だったのでしょう。 >print <<"HTML"; >Conyent-type: text/html Conyent-type:・・・・・ 間違い探しですネ。もしコレが原因じゃないとすれば、もはや私には分かりません。。。。

chack
質問者

お礼

お答え頂きましてどうもありがとうございました! ホ、ホントだー、大正解です!! そうなんです。コピペで入れたものです。 これを直したら全て問題がなくなりました。 どうもお世話になりました!

  • makito
  • ベストアンサー率21% (3/14)
回答No.2

違うと思うのですが、万が一と言う事がありますので、載せておきます。 そのDLするか聞いてくる方のサーバーでは、もしかしたら「.httacces」という拡張子ごとの設定を行うファイル が必要なのかもしれません。 だいぶ前の話ですが、私はそれを置いた記憶があります。 最近はめっきり見ませんが。。。 それだと何故MacではDLするか聞いてこないかという事になりますが、どうでしょう。。。 まぁ、万が一の可能性って事で、サーバー管理者に聞くなり、ちょっと調べて見てください(^^; あまりお役にたてなくて申し訳ないです。

chack
質問者

お礼

アドバイスをどうもありがとうございます。 .htacsessですか。どういうファイルかは今日まで知りませんでしたが、名前は聞いたことはありました。 その名前をキーワードにサーチエンジンで検索したところ、記述の方法が載っていたので実際にやってみたんですが、そのファイル、問題のサーバにアップすると、数10秒後に自動的に削除されてしまうみたいで、 「あれ~?やっぱりダメだなぁ」と再度確認のためにftpソフトでアクセスしてみたら無くなってしまっていました。妙な構造のサーバなのか何なのか… そうですね、最終的にはサーバーの管理の方に聞くしかないのかもしれませんね。 >あまりお役にたてなくて申し訳ないです。 とんでもないです。何もお答えが頂けないと、ますます頭を抱えることになりますから、何かしらお心当たりをお聞かせ頂けるのはとても嬉しいです。 どうもありがとうございました!

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

CGIはperlですか? もしそうでしたら、記述先頭行を確認してください。 (#!/usr/bin/perl とか) この記述が、サーバ側のperl実行パスとあっていない事はありませんか?

chack
質問者

お礼

早々のお答えをどうもありがとうございます。 問題のCGIがアップしてある「cgi-bin」ディレクトリには5つのCGIがアップしてあるのですが、どのCGIも全てサーバー設定マニュアル通り、#!/usr/local/bin/perl5と記述してあります。 万一の打ち間違い見逃しを考え、他のCGIからコピー&ペーストして再アップもしてみたのですが、状況は変わらないんです。 また、これらのCGIは全てperl5用なので、perlのバージョン違いということも考えられません。 何せ、Macでアクセスすれば動くわけですし…

関連するQ&A

  • CGIがうまく作動せず困っています。

    CGIがうまく作動せず困っています。 先日、サーバー変更に伴いCGIデータをアップロードしたのですがうまくいきません。 Perlパス・Sendmailパスも以前とは違っていたので変更したのですが…。 テキストモードでアップしています。 You don't have permission to access /cgi-bin/webform.cgi on this server. とでます。 アクションの設定の仕方がおかしいのでしょうか? 前回は、cgi-bin が cgi-local でしたので その部分を変えただけなのですが。 初心者なのでできるだけやさしく教えてください。 よろしくお願いします。

    • ベストアンサー
    • CGI
  • ダウンロード報告 (フリーCGI)

    今画像をネット上にUPしているのですが無断DLが多く チョット嫌だなぁって思っています。 だからと言って、パスワードを付けるのは嫌なんです。 ただダウンロード報告が聞きたいんです。 (Ninja Toolでアクセス解析しているのですがアクセスは多いのに ダウンロード報告は少ないので) そこで ダウンロード報告(30文字以上のコメント)を頂けなければ ダウンロード出来ない(画像の閲覧は出来るけどダウンロードは報告無しでは出来ない)そんなフリーCGIってありますか? CGI設置ぐらいしか出来ない初心者ですが良かったら情報お願いします

  • CGIがダウンロードされてしまうことってありますか?

    掲示板の運営を始めようと思っている者です。 世にサイト丸ごとダウンロードソフトというものがあり、CGIも落とせるとか落とせないとかいう話を聞いて不安になりました。 これは設置されて動いているCGIのプログラム内容や、パスワードなどを見ることが出来るという意味ではないですよね? またこうしたソフトを使うことで、アクセス制限をかけている掲示板の記事がファイル化され、ダウンロードされてしまうことがあり得ますか?

  • CGIを使ったパスによるダウンロード

    現在,Dreamweaver CS5.5 (Mac版)を使ってウェブサイトを作成しています(OSはMac OS X 10.6.8で,サーバーはロリポップのレンタルサーバー)。 パスによるダウンロードフォームを設置しようと思いまして,こちらのサイト↓ http://www.kent-web.com/pwd/login.html で無料CGI(アクセス制限・簡易タイプ)を入手しました。 教えて!gooでのアドバイスも受けて,何とか配布サイトの指示通りには無事に設置できたのですが,その先がうまくいきません。 上記無料CGIはログインフォームで,パスを入力してボタンをクリックすると特定のファイルに飛ぶというものなのですが, このリンク先にzipファイルを置いても,それだけではダウンロードできないものなのでしょうか。 具体的には, 上記CGIのうち,init.cgiに $cf{secfile} = 'zipファイルの相対パス(例えば,./private/secret.zip)'; と記述し,それをlogin.cgiに渡すようにしたのですが, それでは,パスを入力してボタンを押しても,大量の意味不明文字(文字化け)が出るだけで,zipがダウンロードされません。 ちなみに,zipファイルでなく,例えば画像ファイルにした場合には,ボタンを押すと,画像がブラウザ上で表示されます。 パスワードを入力し,ボタンを押すと,直接(途中にHTMLを噛ませたりしないで),設定しておいたzipファイルをダウンロードするようにしたいのですが,どなたかその方法をご存知の方がいらっしゃいましたら,ご教授願えると幸いです。

    • ベストアンサー
    • CGI
  • CGIファイルへのブラウザからの直接入力によるアクセスについて

    自作のカウンターをSSIで設置するという前提では 『設置先のWebページ以外ではカウンターを作動 させない』または『設置先のWebページを経由して いないアクセスにはエラーを返す』という方法は 無いでしょうか? 通常、出回っているカウンターはブラウザから カウンターのURLを入力して直接カウンターCGIの ファイルにアクセスしてもカウントされてしまい ますが、このようなアクセスをカウントしない カウンターを作りたいのです。 (実際にカウンターCGIファイルに直接アクセスして  更新ボタンを押しまくるような人はまずいないと  思いますが、自己満足のためにやってみようと  思ったらできなかったため、気になって仕方が  無いのです・・・。) IFRAMEタグで設置するという前提では何とかなったの ですが、SSIで設置する場合はブラウザからの直接 入力によるアクセスと設置先へのアクセスを見分ける 方法が思い付かず、どうにも上手くいきません。 SSIでも設置先のWebページでしか作動しない カウンターCGIの組み方について、何か名案の ある方がおりましたら、何卒ご指導いただけますよう よろしくお願いします。

    • ベストアンサー
    • CGI
  • カウンタについて(cgi)

    現在HPのアクセスカウンタはプロバイダが提供して くれているものを使っています。cgiで動いているらしい のですが、簡単な設定をするだけでいいのでcgiの知識 がなくてもできました。 今度はHPにファイルをアップしようと思っていますが、 何回ダウンロードされたか知りたいです。 フリーのcgiのソフトで隠れダウンロードカウンタと いうものを見つけました。HPにはカウンタの数字を 表示しないうえ、ダウンロードされた回数もわかる みたいです。 現在使っているプロバイダ提供のカウンタをそのまま 残し、隠れダウンロードカウンタを追加するということ はできますか? もしくは、プロバイダ提供のカウンタを残したまま、 ファイルのダウンロード回数だけわかるような方法 があったら教えてください。 よろしくおねがいします。

  • フリーCGIを設置して、アクセスするとダウンロード画面になってしまう。。

    よろしくお願いします。 自作のホームページでフリーのCGIを使用しようと、設置したのですが、FTPでサーバーに転送して、パーミッションの変更などすべて作業を終え、実際にアクセスすると、「ダウンロード」の画面が出てきてしまいます。。 ダウンロードのファイル名は、リンクをはっている名称(実際は、user.cgi)と同じものが表示(→ダウンロードするとテキストでそのファイルが開く・・)なので、しっかりそこまではたどりついているようなのですが、・・・ 本来は、パスワード入力管理できるCGIで、パスワードの入力画面がでてくるはずです。。 ヘルプサイトなど色々見たのですが、わかりません。。。 ソフトの原因ではなく、設定ウンヌンのあたりだとは思うのですが・・どなたか詳しい方、お願いいたします!

  • CGIフォームが作動しない原因について

    メールフォームのCGIを作成したところ、起動せず、500番のISEエラーになってしまいます。 他のサーバーに置いたところ問題なく起動し、 perlのパスは #! /usr/bin/perl #! /usr/local/bin/perl どちらもためし、 パーミッションも、705や755などで試したのですが、作動いたしませんでした。 また、メールフォームCGIに問題があるのかと、簡易的なCGIを設置し、パスやパーミッションをいじってみたのですが、そちらも作動いたしませんでした。(他サーバーでは機動確認済み) やはり、パーミッションやperlのパスがサーバーによって独自の設定になっているのでしょうか? その場合、サーバー管理会社に連絡をとらずに、確認する方法はあるのでしょうか? CGIやサーバーなどのネットワークに詳しくないもので、 どうかご教授ください!

    • 締切済み
    • CGI
  • CGI BOYはHPビルダーで

    CGIのアクセスカウンターをレンタルしました。 HPビルダー6でやり方の通り設置してFFFTPでアップしたら カウンターが出ません HPビルダーでは使えないのでしょうか? 誰か教えて下さい

  • CGI設置方法

    今HPを作っています。そこでCGIを設置したいのですが難しくて良く分かりません。設置したいのはアクセスカウンター、アクセス解析、メールフォーム、掲示板です。以前もHPを作っていたので多少の知識はあるつもりですがCGIの設置は初めてなので・・・。OSはVISTA、サーバーはロリポップ、FTPはFFFTPです。とにかく困っています。詳しい方、どうかよろしくお願いいたします。

専門家に質問してみよう