6

我正在尝试在 Symfony2 中使用 iMagick。

我正在使用 PHP 5.4.16,我所做的一切:

1-将 php5-4 目录中的 php_imagick_nts.dll 从提取的http://valokuva.org/~mikko/imagick-php54-php53.tgz复制到 php/ext 。

2-将其重命名为 php_imagick.dll 并将“extension=php_imagick.dll”添加到 php.ini

3-创建一个这样的页面:

<?php 
    $a = new Imagick();
?>

但我收到这个:

Fatal error: Class ‘Imagick’ not found in C:\xampp\htdocs\info.php

当我尝试在 symfony 控制器中使用它时,错误再次发生:

FatalErrorException: Error: Class 'Imagick' not found

不幸的是,有关 imagick 扩展的详细信息未出现在“phpinfo()”的输出中

此版本是否与 PHP 5.4.16 不兼容?!如果是,我必须使用什么版本?在哪里?感谢您的帮助...

4

7 回答 7

10

我花了很多时间试图让 Imagick 工作,最后我明白了。

我的安装说明

  1. 安装 WAMP 32bit(即使你运行 64bit 系统也必须使用 32bit 版本的 WAMP)
  2. 将 ImageMagick 安装到 C:/imagemagick,使用此文件:https ://www.dropbox.com/s/i2mhrhd7sp0ilzk/ImageMagick-6.8.0-3-Q16-windows-dll.exe
  3. 将带有 Imagick 的 DLL 放入 PHP 的扩展文件夹,例如 D:\wamp32\bin\php\php5.4.16\ext,我使用了这个文件:https ://www.dropbox.com/s/ayankf850l08rm2/php_imagick.dll
  4. 在 php.ini 中放入不带引号的“SetEnv MAGICK_HOME C:/imagemagick”行
  5. 更好的重启电脑

我使用 Wamp 2.4、PHP 5.4.16、Apache 2.4.4、ImageMagick 6.8.0-3 2012-10-24 Q16、Imagick 3.1.0RC2 - 所有 32 位、操作系统 Win8 64 位

现在它应该可以工作了,你应该看到 phpinfo 中加载了 Imagick 扩展。

我尝试了很多版本的 ImageMagick,但新版本不起作用,6.8.0-3-Q16-windows-dll 工作正常。

Symfony2

在 Symfony2 中像这样使用 Imagick:

$im = new \Imagick('image.jpg');
于 2013-12-15T21:11:24.567 回答
9

在尝试了许多解决方案之后,似乎没有一个有效。

我设法将它安装在 Windows 10 64 位、Apache 2.4 和 PHP 5.6 上,但我认为它应该适用于所有版本。

希望您在安装 Imagick for PHP 时不会遇到任何问题。


步骤 1) 收集信息

首先你应该收集一些关于你的 PHP 环境的信息。

您可以使用该功能轻松查看您的PHP信息phpinfo()

您需要的资料:

  • 架构: x86(32 位)或 x64(64 位)
  • PHP 版本:您可以在phpinfo()输出的标题中找到它。
  • PHP 扩展构建:此字符串包含 2 个重要部分:
    • NTS 或 TS
    • VCx(如 VC11)
  • 加载的配置文件:您使用的php.ini文件的路径。

步骤 2) 下载二进制文件

您可以从 ImageMagick 的官方网站下载二进制文件。我建议您阅读“Windows 二进制发行版”下的简短介绍,以确定可以选择哪个“每像素位数”(8 或 16)。下载最新版本应该没问题。

确保此二进制文件与您在步骤 1中收集的 PHP 架构相同。

步骤 3) 安装二进制文件

将二进制文件安装到您的phpx.x.xx\bin文件中。例如:C:\wamp64\bin\php\php5.6.16\bin。(这可以是任何文件夹,但为了方便我放在这里)

确保选中“将应用程序目录添加到系统路径”。不过应该默认选中。

步骤 4) 下载 PHP 扩展

DLLPHP 扩展可通过windows pecl php 站点获得

同样,您只需单击最新版本。

接下来,根据收集到的信息选择正确的版本。
例如:php_imagick-3.4.1-5.6-nts-vc11-x64.zip

这可以被剥离成组件:

  • php_imagick-3.4.1 - 这是带有版本的 php imagick 扩展。这并不重要。
  • 5.6 - 这是您的 PHP 版本,应该与您在步骤 1中确定的您正在使用的 PHP 版本相同。
  • NTS - 这应该等于您在步骤 1中收集的 PHP 扩展构建的信息。
  • VC11 - 这也应该等于您在步骤 1中收集的 PHP 扩展构建的信息。
  • x64 - 这是扩展的体系结构,应该与您在步骤 1中收集的 PHP 体系结构相同。

步骤 5) 提取 PHP 扩展

下载文件后,您应该打开.zip文件并查找名为:php_imagick.dll的文件。将此文件解压缩到phpx.x.xx\ext.

确保.dll您可以完全访问该文件。有时您需要明确取消阻止文件。

取消阻止文件

步骤 6) 激活 PHP 扩展

要在 PHP 中激活扩展,您应该在php.ini文件中声明要使用此扩展。您已在步骤 1 中收集到您使用的文件的路径。 php.ini

将该行添加extension=php_imagick.dll到您的php.ini

PHP.ini Imagick 行

步骤 7) 重新启动您的电脑

只是为了确保,重新启动您的 PC,以便Environment Path正确加载所有 s。


这应该Imagick使用最新版本和正确的体系结构正确安装。 Imagick还应该phpinfo()与适当的“ImageMagick 支持的格式”一起列出(只要确保它不为空)。

于 2016-04-02T21:13:37.447 回答
2

我很确定这与没有正确加载模块或 .dll 放置在不正确的位置有关。

您可以在使用类之前使用 PHP 的内部函数extension_loaded()进行检查,

<?php
  /**
   * 
  **/
  if (!extension_loaded('Imagick')) {
        //Load some error.
  }
?>

这是一种您可以检查模块是否甚至被 PHP 重新委托的方法。PHP 还提供了一个函数来查看你当前的扩展get_loaded_extensions()

<?php 
   /**
    *   Get an Array of current
    *   PHP extensions for debugging
   **/
   print_r( get_loaded_extensions() );
?>

确保你这样做:

  • 检查您的正确扩展库文件夹位置phpinfo()
  • 执行xmapp/wamp 服务器的硬重启。
  • 如果您使用的是 PHP 5.4 或更高版本(就像您自己一样!),请参阅下面的站点以获取更新的二进制文件

经过研究,Imagick 似乎确实在 PHP 5.3 或更高版本上遇到了问题;从以下网站下载新的 DLL(非官方):

http://www.peewit.fr/imagick/

还发现了其他有同样问题的 StackOverFlow 文章:

Stackoverflow试图让 imagick 在 Windows x64 的 PHP 5.4.3 上运行

或者,您可以使用GD 扩展或多或少地完成一些您需要的相同功能。我确实相信GD是最新版本的 PHP 中更广泛支持的模块/扩展。

于 2013-08-22T08:51:05.963 回答
1

对于那些使用带有 PHP 7 的 Windows 10 的用户,以下可能会有所帮助:

  • 确定您的 Windows 是否是线程安全的(请参阅 phpinfo() 的输出)和 32 位还是 64 位。
  • 此页面包含每个 php 版本和线程安全和 32/64 设置的匹配集。下载 Imagick 和 Imagemagick 文件。
  • 按照 Imagick 页面底部的说明进行操作。
  • 对于 ImageMagick,该页面上的说明不正确。您可以将 dll 文件放在任何地方,但您需要使用 MAGICK_HOME windows 环境变量来引用它们。您可能需要重新启动才能使环境更改生效。
于 2020-07-16T17:31:48.457 回答
0

我使用:Wamp 2.4、PHP 5.4.16、Apache 2.4.4、ImageMagick 6.8.0-3 2012-10-24 Q16、Imagick 3.1.0RC2 - 所有 32 位、操作系统 Win7 32 位

fmstoun 给出的说明对我来说非常有效。由于我花了很多时间试图使 dll 工作,我想添加 fmstoun 给出的步骤。

  • 重启你的电脑。
  • 使用图像的完整路径,例如:
$image = new Imagick($_SERVER['DOCUMENT_ROOT'] . '/images/test.jpg');
  • 确保您的系统环境有 1 个用于 : C:/imagemagick 的单一条目,并且没有更多用于 imagemagick 的环境变量。如果任何以前的安装都有该路径,则删除这些路径并重新启动您的 PC
  • 确保
    http://本地主机/
    wamp 显示“imagick”作为加载的扩展
  • 如果扩展加载正确,它必须在 phpinfo() 中显示为:
  • imagick 模块 | 启用
  • ImageMagick 版本|ImageMagick 6.8.0-3 2012-10-24 Q16
    以及有关 imagemagick 的更多信息。

考虑到这篇文章的日期,官方网站上提供的最新版本的 imagemagick 是:ImageMagick-6.8.8-1-Q16-x86-dll.exe 无法加载扩展(如重启后的 apache 错误日志所示) )。因此使用 fmstoun 提到的版本。

希望这个答案可以节省几个小时的精力,并节省在同一主题和不同论坛上解决大约 15 个 SO 问题所需的时间。

于 2014-01-09T14:54:38.537 回答
0

对于那些也使用 WAMP 的 2019 年的更新,ImageMagick 的一种更简单的方法如下:

  1. 转到https://mlocati.github.io/articles/php-windows-imagick.html
  2. 获取适当设置的 .dll 扩展文件的副本,选择“线程安全”版本。
  3. 使用同一行上的链接获取相应的 ImageMagick 并安装它。
  4. 仅将 .dll 文件复制到您安装 WAMP 的扩展文件夹中,通常是 C:\wamp\bin\apache2.4\ext\
  5. 重启阿帕奇。

希望这可以帮助。

于 2019-09-01T17:35:10.793 回答
-2

对不起,我的英语不好:

1º 安装 Appserv

文件名:“appserv-win32-2.5.10.exe”

网址下载:h*ttp://www.appservnetwork.com/(不带*)

阿帕奇端口:8080

2º 下载 PHP 5.3(Apache 2.2 不支持上级)

文件名:“php-5.3.29-Win32-VC9-x86.zip”

怎么做?:线程安全

网址下载:h*ttp://windows.php.net/download#php-5.6(不带*)

3º 停止阿帕奇

4º删除文件夹“..\AppServ\php5”中的所有内容

5º 将 zip 内容复制到“..\AppServ\php5”

6º 加线

date.timezone = "America/Buenos_Aires" (这是我的区域,在 php 页面中找到你的区域)

到“c:\Windows\php.ini”中的“php.ini”

避免 PHP 中的日期错误

7º 启动 Apache

==============================

IMAGIC(安装 PHP 5.3 后)

1º Instalññ Image magic 6.7(不高级,PHP 5.3 不支持)

文件名:“ImageMagick-6.7.9-9-Q16-windows-dll.exe”

网址下载: http: //ftp.icm.edu.pl/packages/ImageMagick/binaries/

2º下载Imagic

文件名:“php_imagick-3.1.2-5.3-ts-vc9-x86.zip”

网址下载: http: //windows.php.net/downloads/pecl/releases/imagick/3.1.2/

3º在目录“php5/ext”中添加最后一个zip下载的文件“php_imagick.dll”(其他文件不关心)

4º 加线

扩展=php_imagick.dll

到“c:\Windows\php.ini”中的“php.ini”

5º 重启 Apache

于 2015-01-15T17:59:22.500 回答