IISで、Perl は動かすもんじゃない。
今日、MT のチェック CGI(mt-check.cgi) を実行したら、こんな変な文字が上に表示されているのです。
Content-Type: text/html; charset=utf-8
なんで、Content-Typeが表示されてるんだ???
CGI 書き間違えてるはずないしな。
他の CGI もみてみよー。
ってコトになり、ためしに MT4i を見てみることに。
・・・。
やっぱり、Content-Type が表示されちゃってるよ。
理解不能。
携帯でもだめかな?
と思い、MT4iを携帯で見てみる。
さらに、理解できない。
接続先のサーバーは現在ご利用できません (502)
表示できね~。
そういえば、IIS に移行してから携帯のほう PC でしかチェックしてなかった。
それも、502?Bad request???
なんでだ~。PCで表示できるだろ~。
そして、悪夢は突然訪れた。
久しぶりに、Firefoxをいじってて、例のCGIを表示させてみる。
・・・。言葉を失った。
ソース丸出し~。
ふざけるなぁ~。何考えてんのこれ。
最初、MIMEかと思って、.cgi を application/x-httpd-cgi にしてみるも無意味。
この際、Google の力を借りるしかないだろ!!ってことで、ググってみる。
原因判明。どうも、IISでCGI動作させる際
print "Content-Type: text/html; charset=utf-8\n\n";
の前の行に、
print "HTTP/1.1 200 OK\n";
と、記述させる必要があるそうだ。
なんていう情報を見つけたけど、これは "perlis.dll" で動かすときのみ必要らしい?
よく確認してみたら、なんとなく perlis.dll に変えてたんだっけ。
そしたら、さすがに表示された。
なんだこりゃ。なめてんのか~。MS~。
何となくキレてます。
IIS では、Perl を動かすのにこんなに労力が必要なのだろうかと。
でも、ここで一つ疑問が。
なんで、MTの管理用CGI(mt.cgi)は、今回の問題が起きなかったんだ?
上に、Content-Typeが表示されることもないし、Firefoxでみても、ちゃんと表示されるし。
まあ、perlis.dll で使うときには、HTTP/1.1 200 OK を全部の cgi スクリプトに追加する必要があるってことか。
ふざけるな。ふざけるな。ふざけるな。
ってことで、perl.exe を使うことにしよう。


コメントする