php shell_exec没有';不能使用imagemagick命令


php shell_exec doesn't work with imagemagick commands

我尝试将rgb颜色转换为透明

当我在命令行中使用这段代码时,它的工作非常完美。

convert -transparent 'RGB(249,249,255)' /home/me/web/my.png /home/me/web/mynew.png

但当我将其与php:一起使用时

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$output = shell_exec("convert -transparent 'RGB(249,249,255)' /home/me/web/my.png /home/me/web/mynew.png");
?>

我得到错误:

convert:无法打开图像`/home/me/web/mynew.png':@error/blob.c/OpenBlob/2498。

有人有主意吗?

必须使用homedir的相对路径(因为shell_exec),否则必须使用绝对路径。

但是为什么不将imagemagik用于php呢?

对我来说,这看起来像是访问权限问题。您的web服务器尝试在主目录中写入一个文件。

通常情况下,您的主目录受到保护,因此除了您自己,没有人可以在其中写入文件。因此,您的web服务器无法创建新文件,而您可以在使用终端时创建。

检查应包含新图像的文件夹的访问权限,并允许运行web服务器的用户写入该文件夹。