想象到/ usr / bin以外的位置

时间:2014-02-08 23:29:12

标签: php heroku imagemagick imagick pecl

我正在尝试为Heroku编译imagick扩展,但是我需要它来查看ImageMagick的/app/bin文件夹而不是/usr/bin/文件夹。我已经使用了尽可能多的google-fu,但我无法弄清楚如何构建imagick.so扩展并让它指向一个不同的文件夹。

从PHP开始,如果我shell_exec("which convert"),它会回复/app/bin版本,但当我Imagick::getVersion()时,它会指向/usr/bin/版本。这让我觉得这是扩展中的一个问题。

我从来没有从make我自己的扩展来源,所以这绝对是原因的一部分。你可以做的任何事情都可以帮助我指明正确的方向。

2 个答案:

答案 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小伙看看。