我正在尝试为Heroku编译imagick扩展,但是我需要它来查看ImageMagick的/app/bin
文件夹而不是/usr/bin/
文件夹。我已经使用了尽可能多的google-fu,但我无法弄清楚如何构建imagick.so扩展并让它指向一个不同的文件夹。
从PHP开始,如果我shell_exec("which convert")
,它会回复/app/bin
版本,但当我Imagick::getVersion()
时,它会指向/usr/bin/
版本。这让我觉得这是扩展中的一个问题。
我从来没有从make
我自己的扩展来源,所以这绝对是原因的一部分。你可以做的任何事情都可以帮助我指明正确的方向。
答案 0 :(得分:0)
尝试使用webroot中的php.ini
文件,其中包含以下内容:
extension_dir="/app/bin"
extension=imagick.so
答案 1 :(得分:0)
你可能有错误的结束。您不会针对Image Magick可执行文件编译Imagick扩展,而是针对Image Magick库编译。即如果你通过包管理器安装Image Magick,你应该安装“ImageMagick-devel”而不是“ImageMagick”
然后,您可以使用以下设置设置Imagick应该为Image Magick库查找的目录:
./configure --libdir=/usr/lib64 --with-php-config=/usr/local/bin/php-config
或类似,具体取决于库的安装位置,然后调用make。
但是,如果你已经编译了Imagick,你可以从源代码编译Image Magick。
修改的
如果我站在你身后,这可能会在5分钟内解决。我建议:
1)找到Imagick库在系统中的实际位置 - 特别是找到libMagickWand-6.Q16.so文件。
2)确保您将要使用的Image Magick库复制到实时服务器以及Imagick库,除非您正在静态编译它(您可能不是)。
3)重命名您不希望编译的lib。看看编译Imagick是否选择了正确的版本。
4)调试Imagick的./configure脚本 - 你可以打印像AC_MSG_RESULT(libs before $DEBUG_LIBS)
这样的东西,因为我必须做一个问题:https://github.com/mkoppanen/imagick/issues/8并确保它在编译时选择正确的版本。
5)在https://github.com/mkoppanen/imagick/处提出一个问题,让Imagick小伙看看。