MT導入記録 2006年09月28日(Jcode.pm)
うまくいったかに見えた、定期的にmail-entry.cgiを動かす作戦。
ふと気づくと、なんかエラーがあったらしくcronさんからメールがきてる。
Subroutine Jcode::ucs2_euc redefined at
(mt.cgiのディレクトリ)/extlib/Jcode/Unicode/NoXS.pm line 56.
Subroutine Jcode::euc_ucs2 redefined at
(mt.cgiのディレクトリ)/extlib/Jcode/Unicode/NoXS.pm line 71.
Subroutine Jcode::euc_utf8 redefined at
(mt.cgiのディレクトリ)/extlib/Jcode/Unicode/NoXS.pm line 87.
Subroutine Jcode::utf8_euc redefined at
(mt.cgiのディレクトリ)/extlib/Jcode/Unicode/NoXS.pm line 94.
Subroutine Jcode::ucs2_utf8 redefined at
(mt.cgiのディレクトリ)/extlib/Jcode/Unicode/NoXS.pm line 101.
Subroutine Jcode::utf8_ucs2 redefined at
(mt.cgiのディレクトリ)/extlib/Jcode/Unicode/NoXS.pm line 124.
「使おうとしたサブルーチン名はすでに使われています」ってことかな?
検索してみると、文字コード変換するときに Jcode.pm っての使うと、さらに Unicode.pm か NoXS.pm かどちらかに下請けとして発注するらしい。
で、(mt.cgiのディレクトリ)/extlib/Jcode/ をみてみると、これが両方入ってる。
Unicodeさんに発注したの忘れてNoXSさんにも発注かけたら「おいおい、そいつはもう発注済だぜ」って上司にしかられたって感じかな?よくわからんけど。
mt3.33のアーカイブにはもともとUnicode.pmは入ってないんだけど、以前のバージョンで「Unicode.pmがない」ってしかられたんで、どっからかさがしてきて入れたんだった。
そんぢゃあってんで、Unicode.pmをはずしちゃったら、mt.cgiが「Unicodeさんがいないといやだよ」って動いてくれなくなっちった。
で、Unicode.pmもどしてNoXS.pmなくしてみたら、こんどは
Subroutine Jcode::ucs2_euc redefined at
(サーバの perlディレクトリ)/Jcode/Unicode/NoXS.pm line 56.
Subroutine Jcode::euc_ucs2 redefined at
(サーバの perlディレクトリ)/Jcode/Unicode/NoXS.pm line 71.
Subroutine Jcode::euc_utf8 redefined at
(サーバの perlディレクトリ)/Jcode/Unicode/NoXS.pm line 87.
Subroutine Jcode::utf8_euc redefined at
(サーバの perlディレクトリ)/Jcode/Unicode/NoXS.pm line 94.
Subroutine Jcode::ucs2_utf8 redefined at
(サーバの perlディレクトリ)/Jcode/Unicode/NoXS.pm line 101.
Subroutine Jcode::utf8_ucs2 redefined at
(サーバの perlディレクトリ)/Jcode/Unicode/NoXS.pm line 124.
てメールがcronさんから届いた。
これは、
(mt.cgiのディレクトリ)/extlib/Jcode/Unicode.pm と
(サーバのperlディレクトリ)/Jcode/Unicode/NoXS.pmを
よみこんぢゃってるって事?
さてどーしたもんかと思ってたけど、
あ、サーバにちゃんとJocodeはいってるんだから、mtが自前で持たなくてもいいぢゃん
て思って、(mt.cgiのディレクトリ)/extlib/の下のJcode関係をはずしてみたら・・・
- mt.cgiはちゃんと動いてるみたい。
- cronでmail-entry.cgi動かしてメール取り込んだあとも、cronさんから苦情はこない。
てなわけで解決ってことにします。
まとめ
問題
mail-entry.cgiを動かすと、Jcode関係でエラーが出た
環境
mtのextlib/以下にJcode.pmとUnicode.pmとNoXS.pmが入っている
サーバのPerlはPerl5.8.0(Jocdeの機能元々入ってるハズ)
対応
mtのextlib/以下のJocode関係を削除
結果
いまのところ問題解決しているように見える。
レスポンス