3

PHP 5.3.8

WAMP 2.2.21

ImageMagick 6.6.2 Q16


致命错误:无论如何都找不到类“Imagick”。不管我多少次...

  1. 安装/重新安装不同版本的 ImageMagick
  2. 尝试各种 VC9 构建的 php_imagick.dll 到 'wamp\bin\php\php5.3.8\ext\'
  3. 已更新我的 php.ini 以包含 'extension=php_imagick.dll'
  4. 重新启动了我的电脑和 WAMP ......我数不清多少次 O_o

我在 WAMP 启动时也收到此错误

在此处输入图像描述


有趣的是 php_imagick.dll 通过 WAMP 任务栏出现在我的 PHP 扩展中

在此处输入图像描述

但不在我的 localhost PHP-Loaded Extensions 中:

本地主机加载的扩展


有没有人知道为什么会这样?或者有什么建议?


解决方案:我必须努力学习... WAMP 2.2 x32 而不是 x64,ImageMagick 6.6.4 Q16 最多。

4

1 回答 1

1

您没有加载php_imagick.dll扩展。

首先检查文件是否存在并且可读。如果是,那么它没有加载,因为DLL 本身需要一些其他 DLL;Windows 通常不会显示此错误。您将需要一些诸如DEPENDS 之类的工具来加载php_imagick.dll并查看它包含哪些未解析的外部。

libeay32.dll您可能会发现某些函数是由某个库(例如不同的 VC 运行时(例如MSVCR90.DLL)。

例如,php_imagick.dll我发现的一个示例 PHP 5.3 依赖于这两个 DLL

CORE_RL_WAND_.DLL
CORE_RL_MAGICK_.DLL

猜猜看,CORE_RL_MAGICK本身取决于其他符号,这解释了这个人遇到的问题(他的解决方案可能比必要的更彻底,但是,嘿,不管怎样——它也可能对你有用,但请继续阅读)

ImageMagick - “CORE_RL_magick_.dll not found”或如何使用 ruby​​ 1.9.2 在 Windows 上安装 RMagick

使用 DEPENDS 再次查看 CORE_RL_MAGICK 会发现依赖于特定版本的 Visual C++ 运行时(对于某些版本的 IM,QT 也是如此),这与被称为“VC6 对抗 VC9”的丑陋蠕虫有关(例如http: //www.websiteadministrator.com.au/articles/install_guides/installing_php533_pg2.html)。

现在,你应该怎么做?这取决于. 字面上地; 因为不是盲目地随机重新安装,直到星星是正确的(再次:它可能会工作。它经常这样做!),我会在 DLL 上启动 DEPENDS imagick,然后在 ImageMagick 核心 DLL 上启动,依此类推,直到我找到迷宫曲折的小依赖,所有类似的,Windows 应该告诉你,但没有。

(这就是为什么它被称为“ DLL Hell ”)。

于 2012-10-24T10:33:46.310 回答