【问题标题】:Imagick on heroku - is it possible?Heroku上的Imagick-有可能吗?
【发布时间】:2012-07-04 10:03:29
【问题描述】:

我需要对 jpeg 图像执行一些操作 - Heroku 的 PHP GD 不允许这样做。我读过 Imagick 是可能的,所以我重写了代码,将其推送到 heroku 并......

PHP 致命错误:在 [...] 中找不到类“Imagick”

所以我做错了什么(代码在本地工作)?

$tlo = new Imagick();
$tlo->newImage(640, 480, new ImagickPixel('white'));
$tlo->setImageFormat('jpg');

有没有办法在 heroku 上使用 jpg?

【问题讨论】:

  • 至于做错了——是的,你试图在不同的环境中运行代码,却没有完全意识到它是如何工作的。 Imagick 而不是 GD 不是 php 的一部分,需要外部库 (ImageMagick) 并且必须另外安装。
  • 这是我在github 上编译的imagick.so 和说明。设置需要 5 分钟

标签: php heroku module imagick


【解决方案1】:

更简单的方法是使用 composer.json 安装 ImageMagick,如下所述:https://devcenter.heroku.com/articles/php-support#using-optional-extensions

您只需在require 部分中包含imagick 并更新作曲家:

{
    ...
    "require": {
         "ext-imagick": "*",
         ...
    }
}

【讨论】:

  • 请注意,在将这一行添加到您的 composer.json 之后,您还需要运行“composer update”来更新您的 composer.lock 文件。然后你可以将这两个文件签入 Git 并推送到 Heroku,它将安装 Imagemagick。
【解决方案2】:

ImageMagick 是一个命令行实用程序和编程库,必须在系统上安装 Imagick 才能工作。

如果它不适合你,那么大概 Heroku 的 PHP web dynos 没有默认安装这个。您有两个选择:您可以找到一些复杂的方法将 ImageMagick 与您的应用程序本身打包,例如通过将已编译的二进制文件添加到您的 git 源代码树。或者,您可以修改 Heroku PHP buildpack,这是在部署应用程序之前设置 Web dyno 的一组规则,以安装 ImageMagick 以及 Apache 和 PHP 本身。后一种方法更有可能奏效。

修改 buildpack 后,使用命令行 Heroku 工具(--buildpack 选项)更改应用程序以指向 buildpack 分支并重新部署。

【讨论】:

  • 谢谢@Andrew Gorcester,你能告诉我如何将 imagick 添加到自定义 buildpack 中吗?谢谢
  • 对不起@OscarFanelli,我已经三年没有使用这个功能了,所以我不记得或没有最新的信息。祝你好运!
猜你喜欢
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 2011-08-26
  • 2011-07-04
  • 1970-01-01
相关资源
最近更新 更多