【发布时间】:2011-08-23 15:25:27
【问题描述】:
我在 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('转换版本', $output); var_dump($output);
不产生任何东西(或空数组)。
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
完成。
【问题讨论】:
-
在 PHP 的路径中转换?您可能必须在 exec() 调用中指定
/absolute/path/to/convert。请记住,PHP exec() 调用中的环境可能与您在 shell 提示符下获得的环境大不相同。 -
嗯,问题是 - 一切都在生产服务器上运行,只是不适用于 Homebrew。我认为 PATH 应该被继承到 exec 沙箱中,不是吗?
-
php的shell环境与用户shell环境完全不同。你不能直接比较它们。尝试做
exec('echo $PATH');看看shell 会发生什么。 PHP 将继承 Apache 环境。 -
太棒了!那行得通!你可能为我节省了几个小时。我非常感谢@aorcsik!
-
仅仅编辑环境变量对我不起作用。我也必须在 /usr/bin/ 中创建符号链接才能让 Imagick 在 exec 中工作。另外,请记住在编辑 envvars 后重新启动 MAMP 中的服务器。
标签: php osx-lion imagemagick mamp homebrew