致命错误:找不到“imagick”类

问题描述 投票:0回答:6

我正在尝试在 WampServer 2 下安装 imagemagic php 扩展。

  • 我已经下载并安装了 ImageMagick 。我选择了ImageMagick-6.8.8-10-Q16-x86-dll.exe

  • 我已经下载了 php 扩展。

  • 我已将刚刚下载的dll扩展移至C:\wamp in\php\php5.4.16 xt\

  • 我更改了 php.ini(通过 wamp 托盘图标 > 右键单击 > PHP > php.ini 访问它)并将“extension=php_imagick.dll”(不带引号)添加到扩展列表中。

  • 我重新启动了 Apache。我没有注意到托盘图标中 PHP 扩展列表中显示的扩展,因此重新启动了 wampserver。 ImageMagick 扩展现在在列表中显示已启用。

但是,我无法使用它。进行快速测试会返回“致命错误:未找到‘Imagick’类”。在 phpinfo() 中仅显示 imagemagick 已添加到环境变量中。

当我尝试测试 imagick 时:

$im = new imagick( 'test.jpg' );
// resize by 200 width and keep the ratio
$im->thumbnailImage( 200, 0);
 // write to disk
$im->writeImage( 'test_thumbnail.jpg' );

我收到错误:

Fatal error: Class 'imagick' not found
我究竟做错了什么? 我正在使用 win7 32 位、phph 5-4-16 和 apache2

php apache imagemagick
6个回答
24
投票

您的库版本可能未对齐。

我是这样解决的

我真的很挣扎于所有这些答案。回顾过去,我意识到他们中的大多数都是正确的,只是他们遗漏了一些非常精细的至关重要的细节。

1). 首先也是最重要的,在开始下载任何库或 DLL 之前,您需要从 php_info 开始找出这三个非常重要的参数。

在您的服务器上运行它:

<?php phpinfo() ?>
并检查:for

  1. 架构:x86 或 x64。你的计算机可能是 x64,但你的 php 运行在 x86 上,所以不要假设
  2. 线程安全:是或否。也非常重要。
  3. 您的 PHP 版本

2). 从以下位置下载 ImageMagick:https://windows.php.net/downloads/pecl/deps/。 我的电脑是 x64,但我的 php 运行的是 x86,所以我下载了 ImageMagick-7.0。--vc*-x86.zip

3). 将解压后的 bin 子文件夹中的所有 DLL 解压并复制到 Apache bin 目录中。它是一堆 CORE_RL_.dll 和 IM_MOD_RL_.dll 以及一些其他 DLL。就我而言,[zippeddownload]/bin/* -> 复制到 -> C:\Xampp pache in

4). 前往http://pecl.php.net/package/imagick。您可以选择 zip 链接或仅选择 DLL 链接。我更喜欢 DLL 链接。就我而言,我选择了最新版本 3.4.3。然后我去了https://pecl.php.net/package/imagick/3.4.3/windows。 这里我们必须再次谨慎选择

  1. 我的php版本是PHP 5.6
  2. 线程安全已启用
  3. PHP 运行的架构是 x86
  4. 所以我采用了5.6线程安全(TS)x86

5). 解压并将“php_imagick.dll”复制到 php ext 文件夹中。以及所有其他 DLL 文件到 php 文件夹

6). 使用编辑器打开php.ini。搜索“extension=”并将此行 extension=php_imagick.dll 添加为其中之一。

7). 重新启动 Xampp/Wamp 或重新启动 Apache 并再次运行 PHP_INFO。 Imagick 应该显示。如果您仍然看不到它,请参阅此链接http://php.net/manual/en/imagick.setup.php#119084

额外提示:您可能需要下载Visual C++ 14运行时。通过此链接https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads我选择了最新版本。


21
投票
  • 尝试:
    php -m | grep imagick
  • 如果结果为空,请执行:
    sudo apt-get remove --purge php5-imagick && sudo apt-get install php5-imagick

问候


1
投票

我让它工作的唯一方法是使用旧版本的imagick:

php_imagick-3.2.0b1-5.4-nts-vc9-x86


0
投票

在任何页面中执行

<?php phpinfo(); ?>
。这将显示该服务上运行的所有服务。如果它正在运行,那么它会显示您在哪个目录中。

如果您使用 WHM 面板,您可能需要在那里安装 imageMagick


0
投票

您是否尝试过在课程中使用正确的大小写,以大写“i”开头?

$im = new Imagick( 'test.jpg' );

在 php 中,类和文件名不区分大小写,但类加载器则区分大小写。


0
投票

我能够让 WAMPSERVER 3.2.3 正常工作。原来有好几个php.ini文件。我必须更改 Apache 服务器的目录中的目录,才能使 ImageMagicK 与 LocalHost 一起使用。

我将扩展添加到目录 apachexx.xx.xx 中的 php.ini 文件中

扩展名=imagick

我的路径仍然指向 PHP 目录并且对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.