LINUX.ORG.RU
ФорумAdmin

openwebmail - wide character error?


0

0

Приветствую! может кто сталкивался - поставил на 12.0 слаку опенвебмайл. все модули что в ридми написаны, тоже поставил. поборол, завёл. выплыла след проблема: если в сабджекте есть нацсимволы ( латышские, хотя думаю и с русскими не лучще будет), после нажатия кнопы "сенд" выбрасываеться

Software error: wide character in subroutine entry at /srv/httpd/cgi-bin/openwebmail/modules/tool.pl line 160

в линии сей фактичски происходит: # generate a unique (well nearly) checksum through MD5 sub calc_checksum { my $checksum = md5(${$_[0]}); # remove any \n so it doesn't react with ow folder db index delimiter $checksum =~ s/[\r\n]/./sg; return $checksum; }

160ая это my $checksum = md5 ... опенвебмайл версии 2.53 20080123 перл 5.10.0 апача 2.2.4, пхп 5.2.3

может кто подскажет куда копать? саброутин этот вызываеться из openwebmail-send.pl, попробовал строку вызова закоментить, начинает ругаться на wide character in null operation at openwebmail-sendpl at line 2244 :(

anonymous

сомневаюсь что поможет, но попробуй вот что

в файле tool.pl

use Encode qw(encode_utf8); # эту строчку в начало файла

а строчку "my $checksum = md5(${$_[0]});" поменяй на

my $checksum = md5( encode_utf8( ${$_[0]} ) );

вообще-то лучше бы знать кодировку, в которой пришло письмо, и использовать ее для конвертации, а так -- фиг знает, сработает или нет

anonymous
()

Только что проверил со своим openwebmail-2.53. Написал subject с латышскими символами, хотя практикую использовать только ascii-7. Всё отправилось отлично.

anonymous
()
Ответ на: комментарий от anonymous

спасибо за мысль, выполнил указанные изменения в tools.pl, результат: Software error: Wide character in null operation at /srv/httpd/cgi-bin/openwebmail/openwebmail-send.pl line 2244.

:( оригинальное письмо, с которым я это дело тестирую, прислано с нового аутлука - 2007, кажись6 или восемь, какой там последний оффис. кодировка его боди в том же опенвебмайле показываеться как win1257, сабджект, наверное, тоже :-О

anonymous
()
Ответ на: комментарий от anonymous

поставилв аутлуке по умолчанию кодирвку утф8, проверил - без изменений ошибка. при этом у меня на домашнем серваке эта же версия опенвебмайла стоит - там такой фигни нет. сама слака и ядро там, правда постарее - какая то 11х слакварь, ядро2.4.33. перл - на обоих машинах одинаковая версия.пхп и апачь различаеться, правда... может такое из за пхп быть? апачь сам по себе ж теоретически в таком виновен быть не может?

anonymous
()

проверил ещё и с русскими буквами в сабджекте - ровно такая же ошибка выскакивает. сделал по этому рецепту ( в самом низу): http://search.cpan.org/~gaas/Digest-MD5-2.36/MD5.pm

тоже опять 0- вторая ашипка:

wide character in null operation at openwebmail-send.pl at line 2244

вот кусок кода от сенд:

$attr[$_REFERENCES]=$references; $attr[$_CHARSET]=$composecharset; $attr[$_SIZE]=$messagesize; $attr[$_HEADERSIZE]=length($messageheader); $attr[$_HEADERCHKSUM]=ow::tool::calc_checksum(\$messageheader); my %FDB; ow::dbm::open(\%FDB, $savedb, LOCK_EX) or openwebmailerror(__FILE__, __LINE__, "$lang_err{'couldnt_writeloc $FDB{$mymessageid}=msgattr2string(@attr); $FDB{'ALLMESSAGES'}++; $FDB{'METAINFO'}=ow::tool::metainfo($savefile); $FDB{'LSTMTIME'}=time(); ow::dbm::close(\%FDB, $savedb);

конкретно строка 2244:

ow::dbm::open(\%FDB, $savedb, LOCK_EX) or openwebmailerror(__FILE__, __LINE__, "$lang_err{'couldnt_writeloc :-O пробовал в начале файла прописать no warnings 'utf8';

не помогает :( ума не прилоу его бы там ещё сотворить..

anonymous
()
Ответ на: комментарий от anonymous

> может такое из за пхп быть?

он-то здесь при чем?

> апачь сам по себе ж теоретически в таком виновен быть не может?

а хрен его знает

когда сырой восьмибитный текст передается перловой программе, и она даже и не знает откуда взять кодировку для того, чтобы эту строку понять -- вот все отсюда

а кто ее не передает? и кто должен? вот то-то и оно

в конфиге default_sendcharset выставлен?

anonymous
()
Ответ на: комментарий от anonymous

нашёл сам: http://openwebmail.acatysmoof.com/archive/html/owm-devel/owm-devel.200708/msg...

вкратце:

WARNING: please note, that UTF-8 support is broken in recent versions of perl's CGI.pm module. To find out if you're affected, please run

perl -e 'use CGI; print "$CGI::VERSION\n";'

If your version is 3.21 or higher, you need to find the file CGI.pm in your system's perl tree (/usr/lib/perl5/..., /usr/local/lib/perl5/... or so) and replace the line:

my $utf8 = $charset eq 'utf-8';

with:

my $utf8 = 0;

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.