ImageMagick не работает и не выдает сообщений об ошибках - PullRequest
0 голосов
/ 28 ноября 2010

У меня есть некоторый код на Perl, который я написал для клиента, который, частично, изменяет размеры изображений с помощью convert.

ImageMagick.

Это было сделано с помощью обратных кавычек, захватив выходные данные следующим образом:

$output = `convert foo.jpg foo.gif 2>&1`; # simplified example

Недавно хостинговая компания моего клиента сделала то, что ему сказали, что «изменения DNS», и с этой даты * команда не работает, и не только, нет и вывода $.

Если предположить, что что-то произошло, например, когда его переместили на сервер, на котором нет ImageMagick, или произошла неудачная установка или обновление библиотеки - разве я не должен получить что-то от этого? По крайней мере, "конвертировать не найдено"? Я пытался с system (), и это то же самое. Изображение не преобразовано, ничего не возвращается.

К сожалению, доступ из командной строки недоступен.

* Полагаю, это могло быть совпадением.

Ответы [ 2 ]

1 голос
/ 28 ноября 2010

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

Для захвата всех выходных данных команды оболочки используйте Capture :: Tiny следующим образом:

use Capture::Tiny 'capture';

my @command = qw( convert foo.jpg foo.gif );

my $return_code;
my ($stdout, $stderr) = capture {
    $return_code = system( @command );
};

$stdout и $stderr будут содержать то, что написано на банке.$return_code вернет код возврата самой задачи, который обычно равен 0 при успешном выполнении или ненулевое числовое значение при возникновении ошибки.

0 голосов
/ 28 ноября 2010

Они могут не иметь установленной оболочки (представьте, что perl / mod_perl запускается в chroot), так что обратные пометки не могут быть выполнены вообще (поскольку они включают вызовы sh -c 'convert ...'. Всегда проверяйте $? и $!.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...