PlaggerでRSSを入力としてMTに投稿しようとした所はまりかけたので情報共有。
■環境
・Plagger:0.7.17
・Perl:5.8.5
・OS:CentOS4(?)
■現象
plaggerを実行すると下記エラーが出る。
Plagger::Plugin::Publish::MT [fatal] Wide character in subroutine entry at /usr/lib/perl5/site_perl/5.8.5/XMLRPC/Lite.pm line 167. at line 51
■原因
PerlのLite.pmのバグ。ASCII以外の文字列をBase64エンコードする2バイト言語圏を無視した実装のため。
別件で小飼弾氏が見つけてパッチも送っている。
http://blog.livedoor.jp/dankogai/archives/50374357.html
■解決方法
Lite.pmを直接編集して下記行をコメントアウト。
base64 => [10, sub {$_[0] =~ /[^\x09\x0a\x0d\x20-\x7f]/}, 'as_base64']
# ls -la /usr/lib/perl5/site_perl/5.8.5/XMLRPC/Lite.pm
-r--r--r-- 1 root root 10704 11月 15 2004 /usr/lib/perl5/site_perl/5.8.5/XMLRPC/Lite.pm
# chmod 644 /usr/lib/perl5/site_perl/5.8.5/XMLRPC/Lite.pm
# ls -la /usr/lib/perl5/site_perl/5.8.5/XMLRPC/Lite.pm
-rw-r--r-- 1 root root 10704 11月 15 2004 /usr/lib/perl5/site_perl/5.8.5/XMLRPC/Lite.pm
# vi /usr/lib/perl5/site_perl/5.8.5/XMLRPC/Lite.pmして
/base64で該当行を探し#base64に変更してZZで上書き保存する。
最近のコメント