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