ImageMagick支持的格式没有值。

10
我已经从链接 http://imagemagick.org/script/binary-releases.php#windows 下载并安装了 ImageMagick-6.8.3-7-Q16-x86-dll.exe,我的操作系统是 Windows 7,PHP 版本为 5.3.8。安装成功后,convert 命令可以正常使用。在我的 convert 配置中显示的是 here

enter image description here

但是在我的phpinfo部分,我得到了以下信息:

ImageMagick支持的格式没有值

我通过这种方式得到了所有的ImageMagick值:https://www.evernote.com/shard/s297/sh/12397c86-d016-4ca4-9415-fd541daeca39/2fc504bf5ddba5693efd3249402b2b5c

我不知道为什么它被显示为没有值。我已经在32位Windows7机器上在php 5.3.8中安装了相同的ImageMagick-6.8.3-7-Q16-x86-dll.exe。我从其他网站下载了php_imagick.dll。我不知道我在安装imagemaagick时遇到了什么问题,如果是php_imagick.dll版本的问题,有人可以为这个配置建议适当的php_imagick版本吗?

8个回答

10

我花了几天时间寻找解决方案,最终在Sysinternals procmon中找到了答案。

我发现 Apache 在寻找类似 IM_MOD_xxxx.dll 的 DLL 文件时会查找 c:\windows\system 和 / bin 文件夹。将文件复制到其中一个文件夹即可解决问题。

祝好运。


1
谢谢你告诉我们!/apache/bin 帮助了我。 - Grokking
1
我的Imagick版本(3.2.0b2)文件夹中没有IM_MOD_xxxx.dll。 - sjw0525
请忽略此内容。它们位于ImageMagick文件夹中,该文件夹内部有modules>coders文件夹中的exe文件。 - sjw0525

7
不是所有版本的ImageMagick都能与php_imagick.dll的所有版本配合使用。 Imagick扩展v3.4.*与ImageMagick 7.*结合使用不支持任何图像格式。当我降级到ImageMagick 6.9.*时,问题得到解决。
在phpinfo的echo上,您可以看到需要哪个版本的ImageMagick。搜索“Imagick using ImageMagick library version”和“Imagick compiled with ImageMagick version”(应该相等)。
二进制下载列表: https://www.imagemagick.org/download/binaries/ 或旧版本: http://windows.php.net/downloads/pecl/deps/ 在Windows上安装ImageMagick的逐步说明: https://dev59.com/T3A85IYBdhLWcg3wF_m0#28872879

我完全同意这一点。我曾经苦苦挣扎了将近两天,才发现我的phpinfo中的imagick需要安装相应的ImageMagick版本。那时,我已经安装了ImageMagick 7.*,所以我降级并安装了较低的版本。最终,我让它工作了,并且看到支持的格式数量不为0。 - graceth
二进制下载列表:https://www.imagemagick.org/download/binaries/ - Czechnology
更新2020:扩展v3.4.3应该与二进制6.9一起使用,但扩展v3.4.4应该与二进制7.0一起使用。 - Jorr.it

4

由于这个问题的解决方案在谷歌上首先出现,我将添加一个对我有用的解决方案。来源:http://forums.zend.com/viewtopic.php?t=2397#p15226

我在使用PHP 5.6时遇到了问题,它识别扩展名但不支持任何格式。(http://windows.php.net/downloads/pecl/releases/imagick/3.1.2/

安装最新版本的imagemagick(带有动态库),并将DLL文件从imagemagickDir/modules/coders/* 和 imagemagickDir/modules/filters/*复制到imagemagick根目录可以解决问题,现在调用php时,imagemagick可以正常工作。

不要忘记给IIS访问imagemagick文件夹的权限。

编辑:

当IIS成功识别格式后,我遇到了兼容性问题。

适用于PHP 5.6的工作组合:

http://windows.php.net/downloads/pecl/releases/imagick/3.2.0b2/
http://ftp.icm.edu.pl/packages/ImageMagick/binaries/ImageMagick-6.8.8-9-Q16-x86-dll.exe


1
这节省了我大量的时间。我已经快被搞疯了。移动coders/*和filters/*解决了问题! - Richard Cagle

2

请检查是否设置了

MAGICK_HOME=C:\Program Files (x86)\ImageMagick-6.8.8-Q16\modules\coders

这个路径。


2
MAGICK_CODER_MODULE_PATH instead MAGICK_HOME - OwnageIsMagic

2
我曾经遇到过同样的问题,并尝试了各种方法。你不需要安装ImageMagick在你的系统上,以便运行PHP的Imagick模块,你只需要确保包含CORE_RL_*IM_MOD_* dll文件在apache/bin目录下,然后在php/ext目录下也包含php_imagick.dll。
我在Windows平台上通过XAMPP运行PHP 7.0.25 x86,这些说明非常简单和有用: https://mlocati.github.io/articles/php-windows-imagick.html

1

这个程序和PHP的情况随着时间的推移发生了变化,因此有很多答案可供选择。

目前我正在使用PHP 7.1,非常先进。一开始我像所有的指示一样到处复制DLL,但幸运的是,只需要最新的PECL包和相应版本的Imagick就可以了,而这是棘手的部分。如果想要使用PHP扩展,你不能使用最新的Imagick(本文撰写时为第7版),除非升级扩展。你必须安装与PHP扩展版本匹配的Imagick版本。

正如其他人所指示的那样,下载适用于你的PHP版本的最新PECL imagick包。由于我正在使用线程安全的x64版本的PHP 7.1,因此我想要3.4.3RC1包,在此时唯一具有我的PHP版本的DLL的包。

这些文件中,我只需要复制 php_imagick.dll。接下来,请前往http://windows.php.net/downloads/pecl/deps/下载适用于您系统的最新 Imagick,此时可能是 VC14 版本,只需在系统上安装相应的 C++ Redistributable 包即可运行。解压文件并将 bin 添加到您的路径中。如果您有更新版本的 Imagick,则需要将其替换为此版本,因为这是与 php 扩展兼容的版本。

此时,您应该能够重新启动 apache 并确认 imagick 扩展在 phpinfo 中已启用。它应该向您显示 PHP 扩展的 Imagick 版本。同样,如果您系统中路径上的 Imagick 版本与 PHP 扩展所示版本匹配,则应该看到从版本 6 Imagick DLL 获取的支持格式列表。您不需要将它们复制到 apache bin 或任何其他位置,也不需要创建 MAGICK_HOME 文件夹。


0

我搜索了帖子并尝试了各种建议——持续了几个小时。直到我尝试了这里的步骤https://mlocati.github.io/articles/php-windows-imagick.html(由Codesmith发布,我同意这些步骤简单易懂),我才获得成功。我需要在WAMP上安装。

这个链接背后的页面告诉我们如何确定要下载的ImagickImageMagick的正确版本。只需将三组文件提取到指定的目录中,更改php.ini中的一个设置,然后重新启动WAMP即可。我的代码仅使用JPEG和PNG格式,因此我只移动了那些基于格式的DLL。


1
欢迎来到 Stack Overflow。答案框只用于回答完整的问题。这里不鼓励仅仅是另一个网站链接的答案 - 链接可能会随着时间的推移而失效。最好将其他页面的重要细节添加到答案中,并将链接作为参考保留。 - NightOwl888

0
即使正确安装了imagick和imagemagick,如果它仍然无法正常工作,请检查您的Apache环境PATH变量。很可能,如果路径变量未显示您的ImageMagick安装文件夹,请将其添加到Windows高级系统设置/环境变量/系统变量-> PATH中。
重新启动WAMP服务器并检查Apache环境PATH变量的phponfo。

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