0

我正在尝试通过 PHP 和 ImageMagick (http://net.tutsplus.com/tutorials/php/create-instagram-filters-with-php/) 添加在 Instagram 中找到的 gotham 功能给定的脚本不起作用,但是命令可以。当我生成命令并将它们复制并粘贴到命令行时,它们工作正常。然而,当我尝试使用 exec() 执行它们时,它们不起作用。我查看了给出的输出,它说找不到命令。我在 php.ini 中关闭了安全模式,并且 exec() 不是禁用的功能。我尝试添加 & 和 '2>&1' 但无济于事。为什么 exec() 不理解命令?这是脚本

function gotham($image) {
    exec("convert " . $image . " -modulate 120,10,100 -fill '#222b6d' -colorize 20 -gamma 0.5 -contrast -contrast " . $image . " 2>&1", $output1);
    exec("convert " . $image . " -bordercolor black -border 20x20 " . $image . " 2>&1", $output2);
}

以下是来自 $output 变量的 var_dump 的内容:

array(1) { [0]=> string(30) "sh: convert: command not found" } array(1) { [0]=> string(30) "sh: convert: command not found" }
4

2 回答 2

0

首先确定 imagemagick 安装在您的系统上的位置。您可以通过运行从终端执行此操作

whereis convert

要解决权限问题,请以运行 Web 服务器的用户身份登录。这通常是apache//取决于您的发行版和/或设置nobodywww-data在终端运行以下命令:

su - www-data

以上将当前用户切换到运行 Web 服务器的用户。就我而言,这www-data.

现在convert使用完整路径运行命令(由whereis convert前面的和 php 脚本中的参数确定。如果没有权限问题,这应该可以正常执行。在大多数情况下,您应该看到与从 php 运行时相同的错误Web 服务器中的脚本。

通过运行检查转换程序的权限

ls -l `whereis convert`
于 2012-04-06T07:25:27.733 回答
0

看来你有路径问题。试试这些

  exec("/path/to/Imagick/bin/convert -version", $output2);

或者

  exec("usr/local/bin/convert -version", $output);
于 2012-04-06T06:15:19.333 回答