06.23.10

perl-FCGI, RT3

Posted in opensource at 12:13 am by viliar

При обновлении Fedora12 отвалился Request Tracker (RT3) со следующей ошибкой:

Wide character in FCGI::Stream::PRINT Mason/CGIHandler.pm line 105.

Выяснилось, что в fedora очень удачно внесли обновления судя по- всему в perl-FCGI или в какой-то сопутствующий пакет, так что получилось как здесь:

http://www.opennet.ru/openforum/vsluhforumID8/6763.html 

Переводить все на просто CGI не захотелось, рекомендуемый downgrade не проходит, поэтому по мотивам поста с опеннет был сделан грязный хак в файле

/usr/lib/perl5/vendor_perl/5.10.0/HTML/Mason/CGIHandler.pm

#print STDOUT grep {defined} @_;
my @xout = ( grep {defined} @_ );
utf8::encode(@xout);
print STDOUT @xout;

Тикеты заработали. Спасибо себе хорошему, что не сделал снапшот (как делаю обычно перед обновлениями) и господам-мэйнтейнерам.

Update:

Но это был, конечно, грязный хак, чтобы работало здесь и сейчас. После него будет много неприятных побочных эффектов, например проблемы с выдачей картинок. Более правильным решением является патч на

/usr/lib/perl5/vendor_perl/5.10.0/RT/Interface/Web.pm

--- ./lib/RT/Interface/Web.pm.orig	2009-12-11 17:27:20.000000000 +0000
+++ ./lib/RT/Interface/Web.pm
@@@@ -88,6 +88,7 @@@@ sub EscapeUTF8 {
$$ref =~ s/)/)/g;
$$ref =~ s/"/"/g;
$$ref =~ s/'/'/g;
+    $$ref = Encode::encode_utf8($$ref);
}

# }}}
@

Взято отсюда

Update2

История имеет продолжение. Как выяснилось, после правильного фикса проблема пропала при использовании одного браузера, но проявляется точно так же, как и в начале в другом. Пока не понятно, толи там как-то все завязано на User-Agent, то ли, м.б., виноват какой-нибудь кеш масона. Вечером буду копаться дальше.

Update3

Чуда не произошло. Будучи сильно стесненным во времени, я не стал разбираться, почему под FreeBSD со старым firefox оно не работает, не работает под Ubuntu с последней Оперой, но работает под Ubuntu c последним Firefox и под виндой тоже вполне себе. Хотя я уверен, что это был бы очень увлекательный разбор полетов. Поэтому для меня решили проблему следующие строчки по переводу всего хозяйства под mod_perl:
#FCGIWrapper “/usr/sbin/mason_handler.fcgi” .fcgifcgi-perl
#SetHandler fcgid-script
#ScriptAlias /  /usr/sbin/mason_handler.fcgi/

SetHandler perl-script
PerlResponseHandler RT::Mason
PerlRequire /usr/sbin/webmux.pl
Ну и активация mod_perl.

Comments are closed.

14 queries. 0.240 seconds