2012-04-17 62 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