【问题标题】:Fatal error: Class 'imagick' not found致命错误:找不到类“imagick”
【发布时间】:2014-05-26 09:52:11
【问题描述】:

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

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

  • 我已经下载了 php 扩展。

  • 我已将刚刚下载的 dll 扩展移动到 C:\wamp\bin\php\php5.4.16\ext\

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

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

但是,我不能使用它。进行快速测试会返回“致命错误:找不到类 'Imagick'”。在 phpinfo() 中仅显示 imagemagick 已添加到 env 变量中。

当我尝试测试 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

【问题讨论】:

  • 您在这里提供了整个教程,谢谢,您的 Q 实际上是我们大多数人的答案!
  • 请告诉我你是如何以及在哪里下载 ImageMagick 的?
  • 据我所知,imagik 带有 wamp,您可能想看看它是否已启用。
  • 您可能想手动包含文件。我过去也遇到过类似的问题,但由于相对路径,该类没有被调用。

标签: php apache imagemagick


【解决方案1】:

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

我在apachexx.xx.xx\bin目录下的php.ini文件中添加了扩展

extension=imagick

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

【讨论】:

    【解决方案2】:

    您的库版本可能未对齐。

    我是这样解决的

    我真的很难回答所有这些问题。回想起来,我意识到它们中的大多数都是正确的,只是它们遗漏了一些非常重要的非常精细的细节。

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

    运行 PHP_Info 并检查:

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

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

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

    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我选择了最新版本。

    【讨论】:

    • 第 3 部分)在这里至关重要 - 互联网上的任何其他教程都说我只需要将这些 IM 和 CORE_ 文件粘贴到 php 文件夹中,但它们也需要放入 apache 文件夹中。跨度>
    • Eryk 是对的,在我的另一个站点上,它是为第 3 部分编写的,将所有 DLL 放在 PHP 目录中,而不是 Apache 的。将 DLL 放入 E:\wamp64\bin\apache\apache2.4.37\bin\ 后,它工作得非常好!
    • mlocati.github.io/articles/php-windows-imagick.html 获取最新的.. 但是对于 Windows 10 Pro x64、Apache 2.4.41、PHP 7.4.0 x64 线程安全,我不得不将 CORE_RL_xxx 和 IM_MOD_RL_xxx 文件放在`C: \wamp64\bin\apache\apache2.4.41\bin` 因为它在 PHP 目录中不起作用...或者您应该将它们放在 PATH 变量中的目录中。
    【解决方案3】:

    我让它工作的唯一方法是使用旧版本的 imagick:php_imagick-3.2.0b1-5.4-nts-vc9-x86

    【讨论】:

    • 我不确定我使用的版本,但请尝试使用此链接:http://www.peewit.fr/imagick/ 并安装适当的 zip,在 zip 中您会找到必须将其解压缩到的 .dll 文件(在我的示例中):`C:\wamp\bin\php\php5.4.16\ext` 并继续执行我在主要问题中编写的步骤。如果您仍然有错误,我可能会将我的 imagick.dll 文件发送给您。
    • 本地服务器很难安装
    • 那么你必须在 unix 环境下工作,安装 imagick 非常容易。您不必进行任何额外的配置。祝你好运。
    • 尝试关注这篇文章。它包含有关如何在 Windows 上安装 imagick 的详细信息:http://stackoverflow.com/questions/27193631/installing-imagick-for-php-5-6-3-and-apache-2-4-on-win-7http://refreshless.com/blog/imagick-pecl-imagemagick-windows/
    • 这不应该是 2019 年公认的答案。最新版本的 Imagick 运行良好,请按照以下步骤操作,它运行良好。 stackoverflow.com/a/52731379/8027363
    【解决方案4】:

    您是否尝试过为类使用正确的大小写,以大写“i”开头?

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

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

    【讨论】:

    • 我尝试使用大写字母和非大写字母,但它不起作用我让它工作的唯一方法是使用旧版本的 imagick
    • @GhadaSalem,您应该将其发布为答案。
    【解决方案5】:
    • 试试:php -m | grep imagick
    • 如果结果为空,请执行:sudo apt-get remove --purge php5-imagick && sudo apt-get install php5-imagick

    问候

    【讨论】:

    • OP 在 Windows 上,正如他的问题中许多特定于 Windows 的引用所示(WAMP、Windows 样式的路径、.dll 文件、.exe 文件等)。
    • 你解决了它并帮助了谷歌,不管 OP 想要什么,但他问了什么,哈哈
    【解决方案6】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-14
      • 2017-04-23
      • 2012-04-03
      • 2011-04-16
      • 2014-10-03
      • 1970-01-01
      • 2011-09-08
      • 2011-12-17
      • 2018-12-21
      相关资源
      最近更新 更多