PHP的shell_exec不能使用ImageMagick命令。

3

我尝试将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");

?>

我遇到了一个错误:
转换:无法打开图像“/home/me/web/mynew.png”:@ error / blob.c / OpenBlob / 2498。
有人有什么想法吗?

错误信息中的路径是否是您文件的正确路径? - John3136
现在路径已经更正,但是仍然出现相同的错误... - mcknight
2个回答

4

由于shell_exec的限制,您必须使用相对路径到您的主目录,否则您必须使用绝对路径。

但是为什么不使用php的imagemagick呢?


路径已经纠正,但仍然出现相同的错误。我不使用php的imagemagick,因为我找不到其中的convert -transparent命令... - mcknight

3
对我来说,这似乎是一个访问权限问题。您的Web服务器尝试在您的主目录中写入一个文件。
通常情况下,您的主目录受到保护,以使除您之外的任何人都不能在其中编写文件。因此,当您使用终端时可以创建新文件,但您的Web服务器无法创建新文件。
检查应该包含新图像的文件夹的访问权限,并允许运行Web服务器的用户向该文件夹写入内容。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接