perlのcgiの質問です。

作成したソースがFirefox上でテキストとして表示されてしまいます。
Live HTTP headersで見るとContent-Type: text/plain; charset=EUC
となってしまうのです。
IEではきれいにhtmlとして表示されています。

とりあえず
1.print "Content-type: text/html\n\n";とソースの一番上に書いても、テキストとして表示されるだけ。IEでもContent-type: text/htmlと表示されてしまっている。
2.Apacheの設定が悪いのかと思ったが自分が作った以外の同じサーバの他のソースでは同じ拡張子、しかもContent-type: text/htmlなしですらFirefoxでtext/htmlとして表示されている。(Live HTTP headers上でも)

Webを検索してもprint "Content-type: text/html\n\n";を一番上に書きなさいとぐらいの情報しか探せず手づまりな状況です。
なにか思い当たることのある方何でも結構ですので教えてください。

回答の条件
  • 1人5回まで
  • 登録:2009/03/13 19:29:01
  • 終了:2009/03/20 15:17:49

回答(3件)

id:m6u No.1

《み》回答回数82ベストアンサー獲得回数62009/03/13 19:59:35

ポイント30pt

1.ftpでアップロードしていると思いますが、asciiモードで転送してますでしょうか。改行コードがCR+LFだったりすると、そういう問題を起こすかもしれません。

2.(無料提供などでありがちな)広告自動挿入されるサービスだと、適切な対処はサーバ管理者側に聞かないといけないかもしれません。

3.cgiとして実行されないのだとすると、「.htaccess」への記述が足りないのかもしれません、CGI を有効にするにはをどうぞ。

id:komamix

1.確認しても駄目でした。viで開いて改行を入れて書き込みしてみたんですが。

2.自社内のLAN内のサイトです。

3.Apacheは他のソースが実行されてることで問題ないと思われます。

2009/03/13 21:12:29
id:ele_dir No.2

ele_dir回答回数263ベストアンサー獲得回数202009/03/13 21:05:12

ポイント30pt

print "Content-type: text/html\n\n";

の部分を、

print "Content-type: text/html; charset=EUC-JPS\n\n";

と書き換えてみてください。

いかがでしょうか?

id:komamix

やはり同じでした。EUC-JPSはEUC-JPでよいのですか?

あとIEでもContent-type: text/html; charset=EUC-JPSとそのまま表示されるのが解せないところです。

2009/03/13 21:14:41
id:tezuboa No.3

tezuboa回答回数18ベストアンサー獲得回数22009/03/14 00:19:45

ポイント30pt

決定打はないのですが、以下の4つくらいが考えられます。


1.CGIソースファイルを置いているディレクトリがCGIを実行できない場所である。


2.CGIソースファイルのパーミッションを755にしてみる。


3.print "Content-type: text/html\n\n";の行を下の4行にしてみる。(3行目は空行です)

print <<"END";

Content-Type: text/html


END


4.print "Content-type: text/html\n\n";を一回消して再度入力してみる。

この時コピペしてはいけません。どうみても動きそうなのに動かないときは見逃しがちな入力間違いをしてる場合があります。入力し直してみると以外と動いたりします。

id:komamix

すいません。今日は自宅なので試せませんが。

1.ディレクトリ自体は見てませんでした。プログラム自体の実行権限はなども確認したんですが。見てみます。IEで表示されるので微妙ですが。

2.設定済みです。

3.一応試してみたいと思います。

4.やはりその可能性も捨てきれませんね。試してます。

他にも何でもよいのであればご指摘ください。

2009/03/14 13:47:58
  • id:ele_dir
    訂正
    誤>print "Content-type: text/html; charset=EUC-JPS\n\n";
    正>print "Content-type: text/html; charset=EUC-JP\n\n";
    です。
  • id:ele_dir
    .htaccessに
    AddType application/x-httpd-cgi .cgi
    を加えてみてはいかがでしょうか?
    http://www3.airnet.ne.jp/~vzr04461/perl/output.html
  • id:ele_dir
    >やはり同じでした。EUC-JPSはEUC-JPでよいのですか?
    >あとIEでもContent-type: text/html; charset=EUC-JPSとそのまま表示されるのが解せないところです。

    print "Content-type: text/html;charset=EUC-JP\n\n";
    で良いと思います。
    文字化けでも良いので兎に角、HTMLとして出力されれば良いのですが・・・

    以前、Apacheではないのですが、AN HTTPDをインストールした時、同様のトラブルがありました。
    ヘッダーの設定か、何か、サーバの設定で直せた気がしますが、ちょっと、はっきりとしたことが思い出せません。
    すみません。

  • id:rryu
    ウェブサーバの種類、およびCGIプログラムを実行させる為の設定はどんなものでしょうか。
  • id:komamix
    >ちょっと、はっきりとしたことが思い出せません。
    >すみません。

    とんでもないです。なんでも情報を貰えると助かります。

    >ウェブサーバの種類、およびCGIプログラムを実行させる為の設定はどんなものでしょうか。

    WebサーバはLinux上のApache2です。ちょっと見れてませんが、上述の通り他のプログラムが同じサーバ上で動いていることから問題ないと思うのですが。
  • id:tezuboa
    1行目に
    #!/usr/bin/perl
    のようなパスは書かれていますか?
    同じサーバの他のソースのものと比較して、それが一致しているか確認してみてください。
  • id:tezuboa
    ちなみに、私の環境では(サーバはFreeBSDですが)下記の4行のプログラム(test.cgi)で、Firefox3でも、IE7でも、GoogleChromeでもbbbとウインドウ上に表示されます。


    #!/usr/bin/perl
    print "Content-Type: text/html\n\n";
    print "bbb";
    exit;


    なお、質問内でLive HTTP headersでContent-Type: text/plainと表示されるとのことから、やはり『Content-Type: text/html』が正しく送信できていないと思われます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません