« | »

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関係を削除

結果
いまのところ問題解決しているように見える。

       

レスポンス

Comments and Trackback are closed.

ありません。