The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  правила/FAQ  поиск  регистрация  вход/выход  слежка  RSS
"Wide character in FCGI"
Вариант для распечатки  
Пред. тема | След. тема 
Форум WEB технологии (Perl)
Изначальное сообщение [ Отслеживать ]

"Wide character in FCGI"  +/
Сообщение от Виталий (??) on 09-Мрт-10, 17:09 
Вот такая проблема при попытке запуска perl-сайта на mason.

Гугл говорит, что нужно ставить binmode, однако на дебиане все работает прекрасно, а тут переезжаем на centos.

Гуру, подскажите, что за нафиг.

Полностью ошибка:
Wide character in FCGI::Stream::PRINT at /usr/local/lib/perl5/site_perl/5.10.1/HTML/Mason/CGIHandler.pm line 105.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Wide character in FCGI"  +/
Сообщение от pavel_simple (ok) on 09-Мрт-10, 17:22 
>Вот такая проблема при попытке запуска perl-сайта на mason.
>
>Гугл говорит, что нужно ставить binmode, однако на дебиане все работает прекрасно,
>а тут переезжаем на centos.
>
>Гуру, подскажите, что за нафиг.
>
>Полностью ошибка:
>Wide character in FCGI::Stream::PRINT at /usr/local/lib/perl5/site_perl/5.10.1/HTML/Mason/CGIHandler.pm line 105.

думаю что mason новый а модули CentOS для него в дистрибутиве старые -- см. рекомендуемые компоненты на движок

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Wide character in FCGI"  +/
Сообщение от Виталий (??) on 09-Мрт-10, 19:31 
Чего-то проапдейтил все модули, и нифига
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Wide character in FCGI"  +/
Сообщение от anonymous (??) on 09-Мрт-10, 23:40 
>Wide character in FCGI::Stream::PRINT at /usr/local/lib/perl5/site_perl/5.10.1/HTML/Mason/CGIHandler.pm line 105.

А что, если добавить в CGIHandler.pm такие строчики?

  use open ':utf8';
  use encoding 'utf8';

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Wide character in FCGI"  +/
Сообщение от zdm on 11-Мрт-10, 20:38 
>Вот такая проблема при попытке запуска perl-сайта на mason.
>
>Гугл говорит, что нужно ставить binmode, однако на дебиане все работает прекрасно,
>а тут переезжаем на centos.
>
>Гуру, подскажите, что за нафиг.
>
>Полностью ошибка:
>Wide character in FCGI::Stream::PRINT at /usr/local/lib/perl5/site_perl/5.10.1/HTML/Mason/CGIHandler.pm line 105.

Та-же проблема на Centos 5.2, perl 5.10.1, при print в FCGI приложении.
binmode STDOUT в FCGI враппере не помогает.
Тот-же код под apache работает корректно.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Wide character in FCGI"  +/
Сообщение от cuad0 (ok) on 19-Мрт-10, 04:29 

>>Полностью ошибка:
>>Wide character in FCGI::Stream::PRINT at /usr/local/lib/perl5/site_perl/5.10.1/HTML/Mason/CGIHandler.pm line 105.

Это error или warning?


>Та-же проблема на Centos 5.2, perl 5.10.1, при print в FCGI приложении.

Имхо, без fcgi было бы в логах то же самое.
Сталкивался с таким. Общего решения не нашел, но иногда работало
no warnings 'utf8';
...пишу по давней памяти и на неспавшую голову, мог и ошибиться в синтаксисе.


>Тот-же код под apache работает корректно.

эммм, а под чем работает некорректно?


Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Wide character in FCGI"  +/
Сообщение от zdm on 19-Мрт-10, 18:16 
>[оверквотинг удален]
>Имхо, без fcgi было бы в логах то же самое.
>Сталкивался с таким. Общего решения не нашел, но иногда работало
>no warnings 'utf8';
>...пишу по давней памяти и на неспавшую голову, мог и ошибиться в
>синтаксисе.
>
>
>>Тот-же код под apache работает корректно.
>
>эммм, а под чем работает некорректно?

Корректно работает как CGI приложение под Apache.

Некорректно, когда самостоятельный FCGI демон.
# cat nginx_error.log
2010/03/19 11:13:53 [error] 24091#0: *1 FastCGI sent in stderr: "FCGI application error: Wide character in FCGI::Stream::PRINT at /var/www/pharaoh/Pharaoh/HTTP/Controller/Index.pm line 60" while reading response header from upstream, client: 95.132.240.254, server: wmstar.com.ua, request: "GET / HTTP/1.1", upstream: "fastcgi://127.0.0.1:9012"

При этом FCGI в STDOUT ничего не возвращает, клиент получает пустую страницу.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Wide character in FCGI"  +/
Сообщение от zdm on 19-Мрт-10, 18:24 
>>[оверквотинг удален]
>>Имхо, без fcgi было бы в логах то же самое.
>>Сталкивался с таким. Общего решения не нашел, но иногда работало
>>no warnings 'utf8';

Не помогает.


>[оверквотинг удален]
>
>Некорректно, когда самостоятельный FCGI демон.
># cat nginx_error.log
>2010/03/19 11:13:53 [error] 24091#0: *1 FastCGI sent in stderr: "FCGI application error:
>Wide character in FCGI::Stream::PRINT at /var/www/pharaoh/Pharaoh/HTTP/Controller/Index.pm line 60" while reading response
>header from upstream, client: 95.132.240.254, server: wmstar.com.ua, request: "GET / HTTP/1.1",
>upstream: "fastcgi://127.0.0.1:9012"
>
>При этом FCGI в STDOUT ничего не возвращает, клиент получает пустую страницу.
>

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Wide character in FCGI"  +/
Сообщение от Виталий (??) on 21-Мрт-10, 11:48 
Resolved / Решено

Дело в том, что в модуле FCGI 0.69 произведены некоторые изменения в логике работы, без поддержки ошибочных старых вариантов. Они считают, что раньше программы функционировали неправильно.

Нехорошо они поступили в смысле поддержки уже написаных решений, да бог им судья.

Дружно откатываемся на FCGI 0.68 и проблема решена.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Wide character in FCGI"  +/
Сообщение от zdm on 21-Мрт-10, 16:51 
>Resolved / Решено
>
>Дело в том, что в модуле FCGI 0.69 произведены некоторые изменения в
>логике работы, без поддержки ошибочных старых вариантов. Они считают, что раньше
>программы функционировали неправильно.
>
>Нехорошо они поступили в смысле поддержки уже написаных решений, да бог им
>судья.
>
>Дружно откатываемся на FCGI 0.68 и проблема решена.

Version 0.68_01 --   10 Jan 2010  <mst@shadowcat.co.uk> Matt S Trout
    o Force signal handler installation so that we correctly install handlers
      for SIGPIPE. Fixes RT#5100 <bobtfish@bobtfish.net>
    o Make the PRINT method return the number of bytes written rather than
      undef to be consistent with the IO:: interface. Fixes RT#24347
      <David Dick>
    o Fix UTF-8 double encoding when FCGI is passed octets by downgrading
      them into bytes correctly. Fixes RT#52400 <chansen@cpan.org>

В исходниках FCGI::XL добавилась следующая конструкция в методах PRINT и WRITE:

#ifdef DO_UTF8
            if (DO_UTF8(ST(n)) && !sv_utf8_downgrade(ST(n), 1))
                croak("Wide character in FCGI::Stream::PRINT");
#endif

Может кто-то растолковать, что она делает?

В конечном итоге интересует, как все-же выводить контент в UTF-8 используя последние версии FCGI? У меня модули апдейтятся автоматически из CPAN (cpan upgrade).

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Wide character in FCGI"  +/
Сообщение от Виталий (??) on 21-Мрт-10, 22:38 
>Может кто-то растолковать, что она делает?
>
>В конечном итоге интересует, как все-же выводить контент в UTF-8 используя последние
>версии FCGI? У меня модули апдейтятся автоматически из CPAN (cpan upgrade).

Цитата из https://rt.cpan.org/Public/Bug/Display.html?id=54247

You are trying to output perl's internal UTF-X format, since it contains
code points above 0xFF (0x100) it can't be downgraded (utf8_downgrade).

use encoding 'utf8'; has no effect on FCGI.XS since it's using TIEHANDLE

> This simple code produce an error:
>
> Wide character in FCGI::Stream::PRINT at ./fcgi2.pl line 16.

Yeah, so your code was broken before, but it's now showing up as FCGI
started caring about doing the right thing, rather than just assuming
everything is bytes.

You need to encode your output correctly if you're using non ascii...

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Wide character in FCGI"  +/
Сообщение от voy email on 28-Апр-10, 20:17 
На откат не решился. Поменял код так с:
print $template->output;

на:
my $out = $template->output;
if (FCGI->VERSION > 0.68) {
     utf8::encode($out)
}
print $out

Удачи =)

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Wide character in FCGI"  +/
Сообщение от Николай email(??) on 16-Апр-15, 12:08 
> На откат не решился. Поменял код так с:
> print $template->output;
> на:
> my $out = $template->output;
> if (FCGI->VERSION > 0.68) {
>      utf8::encode($out)
> }
> print $out
> Удачи =)

Прошло 5 лет а воз и ныне там ...

так же можно использовать модуль Encode, что напрямую рекомендуют в документации

print Encode::encode_utf8($template->output);


Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Wide character in FCGI"  +/
Сообщение от Сергей (??) on 08-Июн-17, 15:20 
> Прошло 5 лет а воз и ныне там ...
> так же можно использовать модуль Encode, что напрямую рекомендуют в документации
> print Encode::encode_utf8($template->output);

И еще пару лет прошло...
Чтобы убрать ворнинги "Use of wide characters in FCGI::Stream::PRINT" использую Encode::encode_utf8( $content )

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру