2012-04-17 61 views
1

我做一些東西ImageMagick的。這裏是我的命令:ImageMagick的PHP執行專用服務器

/usr/bin/convert /home/setsail/public_html/microsite/images 
/tmp/fe0e3b88601d254befc115ca6a50365b.png -alpha set -channel alpha -background none 
-vignette 0x3 -resize 66x89 /home/setsail/public_html/microsite/images/oval_thumb 
/77bda03b6358b89efbe747ae414bd75f.png 

此代碼羽化和調整圖像的大小。它工作在本地主機上正常(我使用本地主機上的XAMPP)無論是在外殼和PHP代碼,而我在外殼專用服務器上正常工作。

但是,它並沒有在所有的PHP代碼專用的服務器上運行。這裏是我的代碼:爲什麼發生

$cmd = "convert ".realpath($temp1)." -alpha set -channel alpha -background none -vignette 0x3 resize ".$width."x".$height." ".$dest_img; 
exec($cmd); 

ImageMagick的正確的服務器和主動安裝,以及我看到它在phpinfo()函數 任何想法,我應該怎麼辦?

+1

'EXEC()'可以在服務器上被禁用。檢查你的php.ini文件以查看並在必要時進行更改。 – 2012-04-17 17:27:46

+1

你沒有得到任何命令輸出或'exec'返回碼 - 你應該總是做。如果返回代碼爲零,則表示成功;如果它不是零,那麼檢查命令輸出爲什麼失敗。例如,它可能沒有足夠的權限來訪問'$ temp1'中的文件。 – halfer 2012-04-17 20:12:01

回答

4

命令convert可能不是在由網絡服務器使用的$PATH環境變量存在。使用完整路徑convert

// Substitute the full path for /usr/bin 
$cmd = "/usr/bin/convert ".realpath($temp1)." -alpha set -channel alpha -background none -vignette 0x3 resize ".$width."x".$height." ".$dest_img; 

$results = array(); 
$return_code = NULL; 
exec($cmd, $results, $return_code); 

// Check the output of the command for error: 
var_dump($results); 
var_dump($return_code); 

要找到convert的位置,從外殼的服務器上做

$ which convert 
+1

並檢查命令返回零返回代碼太':)'。 – halfer 2012-04-17 20:12:45

+0

@halfer新增了! :) – 2012-04-17 20:18:46

+1

謝謝Michael,+1':-)' – halfer 2012-04-17 20:43:54