2010-11-27 149 views
0

我有一些我爲客戶編寫的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

回答

0

他們可能沒有殼內安裝了(想的Perl/mod_perl的在chroot中運行的),這樣反引號不能在所有的(執行,因爲它們涉及調用sh -c 'convert ...'。經常檢查$?$!

+0

請注意,我也嘗試了system(),並注意到這個代碼工作得很好直到最近,並且客戶被告知只對DNS進行了更改。 – AmbroseChapel 2010-11-28 02:57:30

1

你可以使用可以轉換成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,或者發生錯誤時返回非零數值。

相關問題