URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 2217
[ Назад ]

Исходное сообщение
"use Image::Magick;"

Отправлено amber46 , 28-Мрт-04 18:51 
Приветствую уважаемые...

Возникла проблема c subj при переносе сайта на другой сервер.
Старый:
FreeBSD 4.7
apache+mod_ssl-1.3.29+2.8.16
ImageMagick-nox11-5.5.7.16
----------
модуль subj работал.
переехали на:
FreeBSD 5.2.1
apache+mod_ssl-1.3.29+2.8.16_1
ImageMagick-nox11-5.5.7.16
----------
престали проходить POST запросы при CONTENT_LENGH больше 2K при условии что в скрипте ХОТЯ БЫ иницииализируется subj.
как только убираю subj все работает - и проходят нормальные POST запрос.
ПОМОГИТЕ - очень не хочется переписывать весь сайт...


Содержание

Сообщения в этом обсуждении
"use Image::Magick;"
Отправлено solotony , 30-Мрт-04 18:55 
Честно говоря я лично не понял в чем заключается проблема. Сформулируй получше.

"use Image::Magick;"
Отправлено amber46 , 31-Мрт-04 00:55 
>Честно говоря я лично не понял в чем заключается проблема. Сформулируй получше.
>

Проблема и в самом деле не совсем понятная :(
при наличии вызова use Image::Magick; в скрипте на который делается multipart POST запрос не передаются переменные, если CONTENT_LENGTH запроса превышает примерно 2K.

то есть в качестве теста например использовался скрипт:
===============================================
#!/usr/bin/perl

use Image::Magick;
use CGI qw/:standard/;

$Test = param('Test');
$Picture = param('picture');

print "Content-type: text/html\n\n";

print "Test=". $Test ."<br>Picture=". $Picture ."<br><hr><br>\n";
================================================
как только я ставлю ремарку на #use Image::Magick; все отрабатывается нормально и переменные приходят.


"use Image::Magick;"
Отправлено solotony , 31-Мрт-04 01:33 
а ты попробуй явно задавать, не param, а
$Test = CGI::param('Test');
$Picture = CGI::param('picture

или попробуй

use CGI qw/:standard/;
$cgi = new CGI;
print $cgi->param('abc');

может и поможет


"use Image::Magick;"
Отправлено amber46 , 31-Мрт-04 03:09 
>а ты попробуй явно задавать, не param, а
>$Test = CGI::param('Test');
>$Picture = CGI::param('picture
>или попробуй
>use CGI qw/:standard/;
>$cgi = new CGI;
>print $cgi->param('abc');
>может и поможет

пробовал: $cgi->param('Test') и $cgi->param('picture') получаются пустые если общее CONTENT_LENGTH > 2K.
проблема IMHO где то в иницииализации Image::Magick.
при этом функции Image::Magick рабочие - проверил. то есть написал маленький скриптик которые в частности ресайзит картинку.
Пока что решил проблему след. образом: выделил функцию обработки картинки в отдельный скрипт и вызываю его из скрипта получающего картинки с помощью system() - то есть убрал иницииализацию Image::Magick в принимающем скрипте - всё работает.
Но в чем проблема была так и не понял.


"use Image::Magick;"
Отправлено velocity , 08-Фев-05 10:52 
>Но в чем проблема была так и не понял.

Слушай, те же грабли, только у меня фри 4.10. Я уже запарился искать косяк. Маленький скрипт работаеть нормально, картинку считывает, ресайзит и записывает, а в большом, с большим постом, нет. В 500 ошибку валится.
Ты так не решил проблему?


"use Image::Magick;"
Отправлено solotony , 08-Фев-05 11:19 
1) а  что в логах? (если die туда не пишет - сделай вывод die в stdout)
2) посмотри на объем памяти доступный и требуемый процессу

>>Но в чем проблема была так и не понял.
>
>Слушай, те же грабли, только у меня фри 4.10. Я уже запарился
>искать косяк. Маленький скрипт работаеть нормально, картинку считывает, ресайзит и записывает,
>а в большом, с большим постом, нет. В 500 ошибку валится.
>
>Ты так не решил проблему?



"use Image::Magick;"
Отправлено velocity , 11-Фев-05 06:57 
>1) а  что в логах? (если die туда не пишет -
>сделай вывод die в stdout)

В логах: Premature end of script headers. Как вывести ошибку не знаю.

>2) посмотри на объем памяти доступный и требуемый процессу

При запуске скрипта этот процесс жрет ресурс процессора ~90% и памяти 50-60 мег. Что за хрень это может быть?


"use Image::Magick;"
Отправлено solotony , 11-Фев-05 12:03 
>>1) а  что в логах? (если die туда не пишет -
>>сделай вывод die в stdout)
>
>В логах: Premature end of script headers. Как вывести ошибку не знаю.

установи handler для die, (также как обработчик сигнала, но __DIE__ )
вывод направь на STDOUT предварительно напечатав заголовок. лучше в BEGIN
модуля, загружаемого первым.

$SIG{__DIE__}  = \&DIE_handler;

sub DIE_handler {
    textheader(); # печатает заголовок
    my ($signal) = @_;
    print("DIE: $signal\n");
    exit;
}


>
>>2) посмотри на объем памяти доступный и требуемый процессу
>
>При запуске скрипта этот процесс жрет ресурс процессора ~90% и памяти 50-60

проверь какие лимиты у юзера и не превышаются-ли?

>мег. Что за хрень это может быть?