mac os lion php 调用imagemagick命令失败
环境为Mac OS lion,在php中使用exec调用外部imagemagick命令进行图片处理,图片没有被处理,查看命令返回的状态码为5,没有任何提示,相同的命令在命令行中可以正常执行。为了获取具体的错误信息还花费了一番力气,关于获取错误输出可以参考:PHP 执行外部命名获取出错信息。
上述错误信息为:
dyld: Library not loaded: /ImageMagick-6.7.5/lib/libMagickCore.5.dylib Referenced from: /usr/bin/convert
从错误信息可以得知命令没有加载到Library,从Imagemagick官网看到Mac OS下安装需要配置DYLD_LIBRARY_PATH,它的路径就是Imagemagick安装路径下的lib目录。由于在/etc/bashrc中配置了,所以命令行下执行是正常的。通过web方式执行php环境不一样,没有加载DYLD_LIBRARY_PATH配置,因此导致执行出错。有了错误信息,也知道错误的原因,解决起来就很简单了,只需要在执行命令的前面添加DYLD_LIBRARY_PATH配置即可。例如:
$cmd = 'export DYLD_LIBRARY_PATH="/{imagemagick install home}/lib/" && '; $cmd .= 'convert -resize 120x60 src.jpg desc.jpg'; exec($cmd);
欢迎转载,转载请注明文章出处,谢谢!