如何在Windows 7上安装ImageMagick并与PHP一起使用 (3)

18

有其他帖子介绍如何在 Windows 7 上安装 Imagick,但对我并没有帮助。(也许最近版本出了问题)

我按照以下步骤进行安装:

  1. 下载并安装 ImageMagick

http://www.imagemagick.org/download/binaries/ImageMagick-6.8.8-1-Q16-x86-dll.exe

  1. 下载 php_imagick.dll 并将其复制到扩展目录 (c:\xampp\php\ext)

http://www.peewit.fr/imagick/php55/vc11/x86/ts/php_imagick.dll

  1. 编辑 php.ini 文件并添加新的扩展 (c:\xampp\php\php.ini)

extension=php_imagick.dll

  1. 保存 ini 文件并重新启动 Apache (如果需要,请重新启动 Windows)

  2. 启动 Apache 并运行测试

当我启动 Apache 后,弹出一个窗口显示:

程序无法启动,因为计算机中丢失了 php5.dll。尝试重新安装该程序以解决此问题。

然后紧接着出现另一个窗口:

PHP Startup: 无法加载动态库 'C:\xampp\php\ext\php_imagick.dll' - 找不到指定的模块。

根据 funtioneer 的说法,我怀疑出现了某种编译错误。

现在我使用编译器 MSVC11 的 PHP 版本为 5.5.6 (xampp 1.8.3),这与 php_imagick.dll 文件相同。

是从源代码中下载 ImageMagick 并自行编译正确的做法吗?(以前从未在 Windows 上进行过编译)

9个回答

23

我没有使用最新版本,而是从这里下载了ImageMagick-6.7.7-5-Q16-windows-dll。这个版本可以与http://www.peewit.fr/imagick/提供的php_imagick.dll(适用于PHP 5.5.x的Imagick)兼容。

虽然这不是最新版本,但它可以正常工作(甚至无需重新启动计算机)。


2
感谢提供旧版本链接和降级建议。这对我来说真是个绝望的尝试。以防其他人也在尝试,我使用了从ftp.sunset.se链接下载的ImageMagick-6.7.0-10-Q16-windows-dll.exe,并成功让一切工作正常。我在Windows 7上使用Apache和PHP 5.3.x。不需要重新启动Windows,但我重启了Apache。 - Funktr0n
它可以正常工作。我从http://www.peewit.fr/imagick/下载了 imagick dll 并记录了它所测试的 ImageMagick 版本。然后我从 http://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/ 下载了特定版本。 - jim_kastrin
1
上帝保佑你@embe!!! 我花了一整天的时间在Windows 7机器上设置imagick,最新版本是6.9.0-8,连同imagick 3.1.2和php 5.5/5.6。我试了几十个教程,但是你提供的终于对我有用! - Stan
我可以确认这也适用于Windows 10,确保将您的PHP版本降级到5.5.x。 - funktioneer
工作中。最好使用与包装器/插件测试过的ImageMagick版本。由于ImageMagick相对活跃地开发,因此包装器似乎很快就会过时。 - Phil
显示剩余2条评论

10

在尝试了互联网上几乎所有可能的解决方案后,以下方法最终为我解决了问题:

环境:

OS: Windows Server 2008 R2 (64bit)

IIS: 7.5

PHP: 5.5.11 (x86)

PHP.ini: VC11, x86

下载并安装ImageMagick

ImageMagick-6.8.9-1-Q16-x86-dll.exe

从Anatol建议的来源下载相应的.zip文件(感谢Anatol!)


ImageMagick-6.8.9-1-vc11-x86:

将其解压缩到临时文件夹中,并将Imagemagick安装文件夹内的“bin”文件夹中的内容复制到我的情况下的(c:\imagemagick),覆盖文件。

下载.dll文件并将其放置在php扩展文件夹中(我使用了这个)。

PHP 5.5.x非线程安全版的Imagick来自:http://www.peewit.fr/imagick/

使用以下命令在php.ini中添加扩展:

extension=php_imagick.dll

保存php.ini并重新启动IIS。

最终,在phpinfo()调用中显示了Image Magick信息。

令人难以置信的是,想要解决这个问题需要从3个不同的位置下载文件。

希望这有所帮助。


对我来说完美地工作了: 操作系统:Windows 8.1(64位) PHP:5.5.11 我从sunet.se下载了ImageMagick-6.8.9-1-Q16-x86-dll.exe,因为最新的稳定版本ImageMagick 6.8.9.6.显示了这个错误 - con
1
@davey 从 http://www.peewit.fr/imagick/ 获取了它。 - lithiumlab
工作了!Xampp Win7 x64 - Tomas Gonzalez
1
由于问题涉及到XAMPP,而XAMPP当然是Apache而不是IIS,也许您应该修改您回答中的那一部分。 - RiggsFolly
1
使用 WAMP PHP 5.5 x86 TS 在 Win10 上对我有用。 - hbit

7
以下是我为了让它正常工作所做的步骤: 注意:让我困惑的一步是,php_imagick.dll版本应该与您安装的imagick版本匹配,这一点并没有得到很好的解释。
好的,那么我采取的步骤是 从http://windows.php.net/downloads/pecl/releases/imagick/3.1.2/下载php imagick dll(我使用的是php_imagick-3.1.2-5.5-ts-vc11-x86.zip)。
压缩文件将包含许多dll,请记住,我们可能需要它在未来。 将php_imagick.dll提取到您的扩展文件夹中。
将其放入扩展文件夹中。
在php.ini中添加 extension = php_imagick.dll
现在问题是我们需要找出php_imagick.dll编译的imagick版本 打开命令提示符并键入php -e -v 我是用之前下载的zip文件来完成的,将其他DLL提取到您的php文件夹中,可能会弹出有关缺少dll的错误消息。因此,从之前的zip文件夹中提取DLL到您的PHP文件夹中。 再次尝试运行php -e -v,应该可以正常工作而没有错误消息。 如果是这种情况,则 重新启动apache。现在查看phpinfo()并转到imagick部分。它将说ImageMagick版本:我的是ImageMagick 6.8.6-8,这是比他们网站上的旧版本。问题在于ImageMagick支持的格式数量:可能会说零。
在此处下载匹配的版本并安装(安装时请确保选中添加到路径变量的复选框)
安装完成后停止apache。从您之前放入的php文件夹中删除DLLS,然后重新启动apache。检查 重新启动apache,一切都应该正常工作。

我已经尝试了很长时间让它工作。对我来说至关重要的部分是将额外的DLL文件复制到php文件夹中! - AJReading

3
请参阅安装imagick php扩展,以在Windows上使用php 7.0+安装imagick php扩展。这是我目前找到的唯一真正的解决方案。它详细地介绍了此过程。

我确认。目前似乎这是唯一的方法。其他解决方案并不完全可行。请确保设置MAGICK_HOME并将相同路径添加到PATH,否则您会收到Warning: PHP Startup: Unable to load dynamic library './ext/php_imagick.dll' - The specified module could not be found. in Unknown on line 0的警告! - tftd
提醒:在使用phpinfo()函数识别库之前,我必须将路径\ ImageMagick \ bin的内容移动到路径\ ImageMagick文件夹中,以便php_imagick.dll文件能够识别该库。 - The Billionaire Guy

3

你如何知道 PHP 扩展使用哪个 CRT? - J.D.

2

更新:2017年8月21日

我已经成功地将ImageMagick与php 7和IIS(Apache非常相似)配合使用:

Imagick 版本号为3.4.3

PHP 7 nts x86,Windows Server 2012 x64,IIS 8.5

1)安装VC++ 2015 https://www.microsoft.com/en-US/download/details.aspx?id=48145

2)从https://pecl.php.net/package/imagick获取php_imagick.dll

3)将其放入php/ext/文件夹中,并在php.ini中添加extension=php_imagick.dll

注意! 支持的最低版本为PHP>=5.4.0和ImageMagick>=6.5.3-10。

目前不支持ImageMagick 7。

查看phpinfo:

enter image description here

您必须安装ImageMagick 6.9.3-7 Q16 x86 4)从http://ftp.icm.edu.pl/packages/ImageMagick/binaries/安装ImageMagick 6.9.3-7 Q16 x86 dll 不要取消“添加变量到路径”。

5)重新启动服务器

就这样


你并不需要整个VC++ 2013,你只需要运行库 从这里下载。你还需要将 extension=php_imagick.dll 添加到你的 php.ini 文件中。不需要重启电脑,只需重新启动Apache即可。 - RiggsFolly
是的,我指的是库,并提供其链接。我使用IIS8。 - Alexufo
1
但是提问者使用XAMPP,这意味着他们使用Apache。 - RiggsFolly

0

问题已解决!

在遇到相同问题并进行了一些搜索后,我找到了Windows的解决方案,它似乎适用于每个版本。

在我的情况下,PHP安装在c:\ php上,我的扩展目录位于c:\ php \ ext。

  1. 将“php_imagick *”复制到 c:\ php \ ext
  2. 将“CORE_RL_ *”,“FILTER_ *”,“IM_MOD_ *”复制到 c:\ php
  3. 在php.ini中添加“extension = imagick”

重新启动Apache,完成。


我可以确认它能够工作,但是长期来看,将一个库的文件与主PHP目录混合在一起是一个不好的想法。 - kanlukasz

0

现在有一些文档没有提到的事情:在您的环境中设置MAGICK_HOME值。ImageMagick需要这个变量,以便知道在哪里找到所有相关的编码器。

打开控制面板,搜索“PATH”。在结果中,选择“编辑系统环境变量”。选择“环境变量…”选项,并添加一个新的“系统变量”(下面的列表)。如果您选择了不同的安装路径,请确保将C:\img替换为您自己的路径。

变量:MAGICK_HOME

值:C:\img\modules\coders

查看更多


0

它通过以下步骤工作。

php 5.5 32位 ts+apache 2.4+windows 10 64位+Imagick 6.9.3-5+php_imagick.dll ts

检查您的系统位数是多少。

http://windows.php.net/downloads/pecl/releases/imagick/选择一个php_imagick.dll版本。

.zip文件中找到php_imagick.dll

如果您不知道如何选择,请在命令行窗口中键入php -v以获取php版本。

运行以下代码,显示您安装了哪种类型的php,线程安全非线程安全。点击这里将有所帮助。

在Windows上:php -i | find "Thread"

在Linux上:php -i | grep Thread

或者你可以运行函数phpinfo()并在网页上搜索"Thread"

你会看到Thread Safety enabledThread Safety disabled
其他步骤已经被@embe写出来了。

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