Imagick php windows

7
我正在尝试在Symfony2中使用iMagick。
我使用的是PHP 5.4.16,并且已经完成以下步骤:
1.从提取的http://valokuva.org/~mikko/imagick-php54-php53.tgz的php5-4目录中复制php_imagick_nts.dll到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

很遗憾,“phpinfo()”输出中没有关于imagick扩展的详细信息。这个版本是否与PHP 5.4.16不兼容?如果是,我应该使用哪个版本?在哪里可以找到?感谢任何帮助...

1
你在尝试之前重启了服务器和PHP吗? - Paul Denisevich
请确保您的计算机上安装了 Visual C++ Redistributable Package(https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170)。这解决了我的问题。 - Mher
7个回答

12

经过多次尝试,似乎没有一个解决方案可行。

我成功地在Windows 10 64位、Apache 2.4和PHP 5.6上安装了它,但我认为它适用于所有版本。

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


步骤1)收集信息

首先,您应该收集一些有关PHP环境的信息。

您可以使用函数phpinfo()轻松查看PHP信息。

您需要的信息:

  • 架构: x86(32位)或x64(64位)
  • PHP版本: 您可以在phpinfo()输出的标题中找到此信息。
  • PHP Extension Build: 此字符串包含2个重要部分:
    • NTS或TS
    • VCx (比如VC11)
  • Loaded Configuration File: 您所使用的php.ini文件的路径。

步骤2)下载二进制文件

您可以从ImageMagick的官方网站下载二进制文件。我建议您在“Windows Binary Release”下阅读一下简短的介绍,以确定应选择哪个“bits-per-pixel”(8或16)。

下载最新版本应该就可以了。

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

步骤3)安装二进制文件

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

确保选中“将应用程序目录添加到系统路径”。默认情况下应该已经选中。

步骤四)下载PHP扩展

DLL PHP扩展可通过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 的文件。将此文件提取到 php x.x.xx\ext 中。

确保你完全可以访问到 .dll 文件。有时需要显式解除文件的阻止。

Unblock file

第6步) 激活PHP扩展

要在PHP中激活扩展,您应该在php.ini文件中说明您想使用此扩展。 在第1步中已经获取了您所使用的php.ini文件的路径。

将以下行添加到您的php.ini文件中:extension=php_imagick.dll

PHP.ini Imagick line

第7步) 重新启动计算机

为确保所有环境变量路径都被正确加载,请重新启动计算机。


这样就可以正确安装最新版本和正确体系结构的ImagickImagick还应该在phpinfo()中列出适当的“ImageMagick支持的格式”(只需确保不为空即可)。


1
非常好的指引……仍在努力让它们正常工作,但是ImageMagick网站上的Windows下载目录实际上是http://www.imagemagick.org/script/download.php#windows,而不是http://www.imagemagick.org/script/script/download.php#windows(多余的脚本目录)。 - Stan Quinn
在 Stack Overflow 上尝试了许多答案两个小时后,这个答案是最有帮助的。我目前收到一个通知,说 imagick 版本编译时比加载的版本旧。1799 vs 1803,这甚至不是与网站相关的版本号,但至少我成功使用了 composer update 命令来安装我想要使用的库。 - Neo
很好。我从其他来源中遵循了大多数这些指示,但每个人都没有提到的一件事(除了你!)就是解除阻止部分。我不确定为什么没有人像这样写出完整的说明,特别是在官方网站上。 - Studocwho

10

我花费很多时间尝试让Imagick工作,最终我成功了。

我的安装指南

  1. 安装WAMP 32位(即使您运行64位系统,也必须使用32位版本的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. 最好重新启动PC

我使用的是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');

谢谢。我第一次尝试就成功了,之前试了很多其他版本都没用。 - Minion
谢谢。你救了我的命。 :D - Mohit Bhansali
这在我的Win 7,64位系统上不起作用(使用所有32位二进制文件)。我已经重新启动了计算机,检查了IM重复的路径等。我已经多次重新安装过(包括WAMP和IM)。 - Dan
2
php.ini 应该有 extension=php_imagick.dll,我认为不需要 SetEnv - Blake Erickson

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或更高版本(像您一样!),请参见下面的网站获取更新的二进制文件。

经过研究,在PHP 5.3或更高版本中,Imagick似乎存在问题;从以下网站下载新的DLL文件(非官方):

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

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

Stackoverflow: Trying to get imagick running on PHP 5.4.3 at Windows x64

或者您可以使用GD扩展来实现您需要的一些相同功能。我认为GD是在最近的PHP版本中更受支持的模块/扩展。


感谢您的回复MackieeE,但问题还未解决。我已将它放在正确的文件夹中。为了确保,我使用另一个扩展测试了您的代码(if (!extension_loaded('Imagick'))),并且它可以工作!我还再次检查了php.ini是否有任何错误,但没有错误行!您认为问题出在哪里? - ABS
@AliBagheriShakib 嗯,看来你并不是唯一一个遇到这个问题的人 :) 我发现了其他有同样问题的页面,虽然它们可能也是你发现的.. :| - MackieeE
嗨@MackieeE。安装http://www.imagemagick.org/download/binaries/ImageMagick-6.8.6-8-Q16-x86-dll.exe是必要的吗?还是将dll文件复制到扩展目录中就足够了? - ABS
如果您通过 .exe 安装了二进制文件,您是否将它们包含在 PATH 中了? - MackieeE
另一个网页:http://alexdespaindev.blogspot.co.uk/2012/02/wamp-server-and-imagemagick.html - 还有,很抱歉我无法提供明确的答案 :/ - MackieeE
显示剩余3条评论

1

对于使用 PHP 7 的 Windows 10 用户,以下内容可能有所帮助:

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

0

针对那些2019年也使用WAMP的人,以下是更简单的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. 重新启动Apache。

希望有所帮助。


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');
  • 确保您的系统环境中只有一个条目:C:/imagemagick,并且没有其他关于imagemagick的环境变量。如果之前安装过该路径,请删除这些路径并重新启动计算机。
  • 确保wamp的
    http : / / localhost/
    显示'imagick'已加载为扩展程序。
  • 如果扩展程序已正确加载,则在phpinfo()中也会显示如下内容:
  • imagick module  | enabled
  • ImageMagick version|ImageMagick 6.8.0-3 2012-10-24 Q16 
    以及有关imagemagick的更多信息。

考虑到此帖子的日期,官方网站提供的最新版本的imagemagick是:ImageMagick-6.8.8-1-Q16-x86-dll.exe,但无法加载扩展程序(在重新启动后查看apache错误日志)。 因此,请使用fmstoun提到的版本。

希望这个答案可以节省几个小时的努力和浏览大约15个关于同一主题的SO问题以及不同论坛所需的时间。


-2

抱歉我的英语不好:

1º 安装 Appserv

文件名:"appserv-win32-2.5.10.exe"

下载链接:h*ttp://www.appservnetwork.com/(去掉 *)

Apache 端口:8080

2º 下载 PHP 5.3(Apache 2.2 不支持更高版本)

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

如何下载?:Thread Safe

下载链接:h*ttp://windows.php.net/download#php-5.6(去掉 *)

3º 停止 Apache

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

5º 将 zip 文件中的内容复制到 "..\AppServ\php5" 中

6º 在 "c:\Windows\php.ini" 的 "php.ini" 文件中添加以下行

date.timezone = "America/Buenos_Aires" (这是我的时区,请在 php 页面上查找您的时区)

以避免 PHP 中的日期错误

7º 启动 Apache

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

IMAGIC(一旦安装了PHP 5.3)

1º 安装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º 添加行

extension=php_imagick.dll

打开位于 "c:\Windows\php.ini" 的 "php.ini" 文件

5º 重新启动 Apache


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接