ImageMagick不能正常工作,也没有给出错误信息

问题描述:

我有一些我为客户编写的Perl代码,部分是使用ImageMagick的convert调整图像大小。ImageMagick不能正常工作,也没有给出错误信息

这是通过反引号完成,捕捉以这种方式输出:

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

最近我的客户的托管公司做他被告知什么是“DNS更改”,并自该日起*,该命令没有按”不仅如此,也没有$输出。

假设发生了一些事情,像他被转移到一台没有ImageMagick的服务器,或者是该库的安装或更新不合理 - 我不应该从中得到回报吗?至少有一个“转换未找到”?我也尝试过使用system(),它也是一样的。图片没有转换,没有东西回来。

不幸的是,命令行访问不可用。

*我想这实际上可能是巧合。

+0

是PerlMagick的一个选项吗? – 2012-01-10 20:55:48

他们可能没有壳内安装了(想的Perl/mod_perl的在chroot中运行的),这样反引号不能在所有的(执行,因为它们涉及调用sh -c 'convert ...'。经常检查$?$!

+0

请注意,我也尝试了system(),并注意到这个代码工作得很好直到最近,并且客户被告知只对DNS进行了更改。 – AmbroseChapel 2010-11-28 02:57:30

你可以使用可以转换成debug option找出它做什么

要捕获一个shell命令使用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,或者发生错误时返回非零数值。