ImageMagick不能正常工作,也没有给出错误信息
我有一些我为客户编写的Perl代码,部分是使用ImageMagick的convert
调整图像大小。ImageMagick不能正常工作,也没有给出错误信息
这是通过反引号完成,捕捉以这种方式输出:
$output = `convert foo.jpg foo.gif 2>&1`; # simplified example
最近我的客户的托管公司做他被告知什么是“DNS更改”,并自该日起*,该命令没有按”不仅如此,也没有$输出。
假设发生了一些事情,像他被转移到一台没有ImageMagick的服务器,或者是该库的安装或更新不合理 - 我不应该从中得到回报吗?至少有一个“转换未找到”?我也尝试过使用system(),它也是一样的。图片没有转换,没有东西回来。
不幸的是,命令行访问不可用。
*我想这实际上可能是巧合。
他们可能没有壳内安装了(想的Perl/mod_perl的在chroot中运行的),这样反引号不能在所有的(执行,因为它们涉及调用sh -c 'convert ...'
。经常检查$?
和$!
。
请注意,我也尝试了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,或者发生错误时返回非零数值。
是PerlMagick的一个选项吗? – 2012-01-10 20:55:48