続々・色々と動かなかった話

NanoAの話ですが。

オフィシャルのcompile_errorはちゃんと動作するのだが、XREAではcompile_errorは動かない。

まあ、XREAはよいとしても、ローカル環境でも動かないのがとてもつらい。

CGI::ExceptionManagerがちゃんと働いていれば、コンパイル時のエラーも補足してくれるはずなのだが…。

と、思ってソースを見ていると、原因っぽいところがわかりました。

CGI::ExceptionManagerのoutputで、HTTPステータス500を出力していますが、そこの改行コードに問題があったようです。

「\r\n」になっているところを「\n」に変えてやるとちゃんとローカル環境でも動きました。

ただ、これがHTTP的に正しいのかどうかが少し疑問です。

…と、思ったのですが。

先日変更したステータス302の出力は「\n」でやっていました。

とりあえず、extlibにあったCGI::ExceptionManager::StackTrace::CGIは以下のように変更しました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
Index: CGI.pm
===================================================================
--- CGI.pm  (リビジョン 36612)
+++ CGI.pm  (作業コピー)
@@ -8,9 +8,9 @@
warn $err->{message};
-    print "Status: 500\r\n";
-    print "Content-type: text/html; charset=utf-8\r\n";
-    print "\r\n";
+    print "Status: 500\n";
+    print "Content-type: text/html; charset=utf-8\n";
+    print "\n";
my $body = $args{renderer} ? $args{renderer}->($err, %args) : $err->as_html(%args);
utf8::encode($body);

うーん。

ちゃんと動くようになって、なんだか、とってもスッキリしました。

Comments

comments powered by Disqus