15

我在 Lion 上使用 Homebrew 安装了 Imagemagick,一切都很好,只是从 php 调用时它根本不起作用。安慰:

$ convert -version
Version: ImageMagick 6.7.1-1 2011-07-29 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2011 ImageMagick Studio LLC
Features: OpenMP   

$ which convert
/usr/local/bin/convert

PHP:

echo exec ('convert -version');

或 exec('convert -version', $output); var_dump($输出);

不产生任何结果(或空数组)。

exec ('/usr/local/bin/convert') // works, but
exec ('which convert') // doesn't

我需要在本地对此进行测试,以确保我可以在生产环境中检测到转换。但我无法正确测试它。PATH 已设置,它可以在终端中运行,但不能在 PHP 中运行。

解决:

事实证明,为了让 php 工作,convert应该/usr/bin/这样解决了它:

ln -s /usr/local/bin/convert /usr/bin/convert

更新

这是因为 MAMP,这里是修复: http: //firedevcom.tumblr.com/post/22791937644/fix-for-homebrew-imagemagick-and-mamp

打开 /Applications/MAMP/Library/bin/envvars

并注释掉以下几行:

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH

完毕。

4

6 回答 6

6

在此处添加我自己的答案,以便您投票:

它是由 MAMP 引起的,这里是修复: http: //firedevcom.tumblr.com/post/22791937644/fix-for-homebrew-imagemagick-and-mamp

打开/Applications/MAMP/Library/bin/envvars

并注释掉以下几行:

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH"
export DYLD_LIBRARY_PATH

完毕。

于 2013-06-03T18:15:24.177 回答
2
sudo ln -s /usr/local/bin/convert /usr/bin/convert
于 2012-06-20T11:01:11.270 回答
1

只需使用exec("PATH=\$PATH:/usr/local/bin; convert file.pdf file.png");它将在运行时将转换添加到 PATH。

于 2012-07-05T08:52:26.267 回答
1

返回命令结果的exec最后一行,恰好是一个空字符串。如果您想获得输出,只需执行以下操作:

exec('convert -version', $output);
var_dump($output); // it is an array which filled with every line of output from the command
于 2011-08-23T15:58:38.267 回答
1

验证 convert in 是服务器的 PATH 环境变量。或者只指定完整路径:

exec('/usr/local/bin/convert -version');
于 2011-08-23T15:49:38.410 回答
1

而不仅仅是 exec("convert .... "); 使用完整路径。您可以通过键入终端来获取它

类型转换

你应该得到类似的东西:转换是散列的(/opt/local/bin/convert)

所以现在使用:

exec("/opt/local/bin/convert ....");

[感谢@Nikki]

在那之后发表评论

DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib:$DYLD_LIBRARY_PATH" 导出 DYLD_LIBRARY_PATH

在 /Applications/MAMP/Library/bin/envvars

于 2013-06-11T08:00:41.570 回答