Ошибки Perl

NY
На сайте с 24.09.2011
Offline
51
668

Всем привет. Прошу помощи.

Есть такая ошибка (сайт самопис на perl):


/путь_до_картинки/a6a63e471b_6400.jpg: crashed 'convert' :( at PZ/apply_do.pm line 17
at /путь_до_индекса/cgi-bin/pz/index.cgi line 41

---

Это код из 41 строки файла index.cgi:

  $interface = new PZ::Interface ();
print $interface->build (QUERY => \%in);

А это из apply_do.pm:

my ($iface, $template, $query, %vars) = @_;

my $h = eval { new PZ::AD () };
eval { $h->process_query ($query) }; // Ошибка здесь
if ($@) {
if ($h->{ERRORS}) {
return my_error ($query, $h->{ERRORS});
}
croak $@;
return;
}

Это при загрузке фотографии возникает. Подскажете в чем дело? Спасибо!

Профессиональное администрирование | ICQ: 804-638
bbon
На сайте с 01.04.2006
Offline
168
#1

А у вас на сервере ImageMagick есть?

NY
На сайте с 24.09.2011
Offline
51
#2

Да, есть. ImageMagick 6.7.7-10.

bbon
На сайте с 01.04.2006
Offline
168
#3

здесь долго можно гадать, в любом случае ошибка сидит, как минимум, в

sub process_query {

или глубже..

Чаще всего, при загрузках файлов, даже не заглядывая в код, в первую очередь надо смотреть права доступа (и собственника) на файлы и на каталоги, куда грузится и куда делается ресайз

NY
На сайте с 24.09.2011
Offline
51
#4

Я нашел в логах информацию о том, что libgomp (ImageMagick), создает много потоков, из-за чего сервер хостинга не дает возможность загрузить картинку, как я понимаю. Нужно задать значение по разрешаемым пакетам либо у хостера, либо усилиями Perl, но я не силен в нем. Как и в код какой функции нужно встроить следующее:

BEGIN { $ENV{MAGICK_THREAD_LIMIT}=2; }

Спасибо.

bbon
На сайте с 01.04.2006
Offline
168
#5
NewYorkStar:
Как и в код какой функции нужно встроить следующее:

Если это поможет - то в вызываемый cgi-файл проще всего, где-нибудь в самом начале, до первого sub. В этом выражении устанавливается глобальная переменная окружения.

Ну, и если в cgi-файле есть уже блок BEGIN {} - то второй создавать не надо, в него же и записать.

NY
На сайте с 24.09.2011
Offline
51
#6
bbon:
Если это поможет - то в вызываемый cgi-файл проще всего, где-нибудь в самом начале, до первого sub. В этом выражении устанавливается глобальная переменная окружения.
Ну, и если в cgi-файле есть уже блок BEGIN {} - то второй создавать не надо, в него же и записать.

Спасибо добрый человек. Заработало. :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий