Instagraph PHP照片编辑exec()函数不执行函数,但在命令行上工作?

时间:2012-04-06 05:57:27

标签: php image imagemagick exec instagram

我试图通过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" }

2 个答案:

答案 0 :(得分:0)

好像你有路径问题。试试这些

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

  exec("usr/local/bin/convert -version", $output);

答案 1 :(得分:0)

首先确定在系统上安装imagemagick的位置。您可以通过运行

从终端执行此操作
whereis convert

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

su - www-data

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

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

运行

检查转换程序的权限
ls -l `whereis convert`