使用 php/windows 安装 ImageMagick 扩展

Posted

技术标签:

【中文标题】使用 php/windows 安装 ImageMagick 扩展【英文标题】:Installing ImageMagick extension with php/windows 【发布时间】:2010-05-18 14:59:00 【问题描述】:

在带有 IIS 的 Windows Server 2003 上运行 php 版本 5.2.5。

拥有几乎相同的服务器,我们可以在其中毫无问题地安装 ImageMagick。它运行完全相同版本的php。使用以下步骤进行安装,但它似乎无法在此服务器上运行。 ImageMagick 本身已安装,但 php 不会加载扩展。

我们花了几个小时试图安装扩展程序。它只是不会出现在 phpinfo() 中。

安装步骤

在 Windows XP (PHP 5.2.x) 上安装 IMagick

    下载并安装ImageMagick-6.5.8-7 Q16-windows-dll.exe http://www.imagemagick.org/download/binaries/ImageMagick-6.5.8-7-Q16-windows-dll.exe

    从下载php_imagick_dyn-Q16.dll http://valokuva.org/outside-blog-content/imagick-windows-builds/080709/

    将 DLL 复制到 [PHP]/extension 目录并将其重命名为 php_imagick.dll

    您必须编辑您的 php.ini 文件并添加新的扩展名:

    extension=php_imagick.dll
    

    保存 php.ini 并重新启动 Apache 服务器。 (如有必要,重新启动 Windows)

    phpinfo() 应显示imagick 已启用。

【问题讨论】:

忘记这个蹩脚的扩展名,通过命令行使用 IM。 @YourCommonSense 以及如何在命令行上进行交互?使用shell_exec? 你也可以在DOS提示符下运行php.exe,它会告诉你模块加载是否有问题。 c:\php> php.exe -e -v 我已经安装了dll并启用了,如何使用呢?我不知道更多。 【参考方案1】:

发现用户 Buttercup 给出的答案非常有用,如果他能更清楚的话。

我的场景是 Windows 2012 R2 x64,PHP 5.5.19 x64,需要安装带有 PHP 支持的 ImageImagick。以下几点我能够安装 ImageImagick 6.9.0 x64 和 PHP_Imagick.dll 3.1.2(两者都是当前最新的稳定版本)。

请注意,我在 NTS 和 x64 模式下下载了所有组件(PHP、ImageImagick 和 PHP_Imagick):而不是在 TS 和/或 x86 模式下。我不知道这是否适用于您自己的情况。

阅读 Buttercup(至于用户 RhoVisions)时我不清楚的一点是他的评论:“用 PHP 版本覆盖从 ImageMagick 6.8.8 Windows 版本中找到的 DLL”。

所以,这就是我所做的(基于 Buttercup 解决方案,我不得不一次又一次地说,非常感谢你!):

    从Link 下载最新的 ImageMagick EXE 安装程序 在我的情况下,我下载了第一个可用的 HTTP 下载文件,标记为“Win64 dynamic at 16 bits-per-pixel”(文件名:ImageMagick-6.9.0-0-Q16-x64-dll.exe)

    运行刚刚下载的安装程序。我将它安装在 C:\ImageMagick6.9.0 之类的简单路径中(但我认为将其从 Program Files 移开并不重要)。另外,在安装过程中,我没有更改任何其他参数的默认值。

    从 PECL 网站下载最新的 PHP_Imagick DLL 文件:http://pecl.php.net/package/imagick 我选择了一个稳定的(不是 Beta 或 RC)版本,在我的例子中是 3.1.2,点击“Windows logo”+“DLL”标签。在我的情况下,它链接到 ht tp://pecl.php.net/package/imagick/3.1.2/windows 。 在它将打开的页面上,您会找到一个表格:您必须根据以下条件选择文件: a) 您拥有的 PHP 版本数(在我的情况下,有 PHP 5.3、5.4、5.5、5.6 的可用 DLL) b) 您拥有的 x64 或 x86 版本的 PHP c) 你拥有的 NTS 或 TS 版本的 PHP 我的情况是 PHP 5.5.x、x64、NTS:所以我下载了标有“5.5 Non Thread Safe (NTS) x64”的那个(文件名:php_imagick-3.1.2-5.5-nts-vc11-x64.zip)

    解压 php_imagick ZIP 并: a) 将 php_imagick.dll 文件复制到 PHP 安装的 EXT 文件夹中 b) 从您刚刚解压缩的文件夹中复制并替换所有 CORE_RL_.dll 到您在第 2 点选择的文件夹中。显然,请备份替换的文件。就我而言,我将 8 个 CORE_RL_.dll 文件从解压缩文件夹复制到 C:\ImageMagick6.9.0。我离开了 C:\ImageMagick6.9.0 其他 CORE_RL_*.dll 没有被覆盖。

    编辑并保存您的 PHP.ini 文件以添加这个简单的行: extension=php_imagick.dll

    重新启动您的服务器(不幸的是,我没有找到任何好的重新启动替代方法:管理员命令提示符中的 IISRESET 也不起作用)。

    重启完成后,通过浏览器远程访问您的 phpinfo.php 文件,以验证 Imagick 模块是否正常。在我的情况下,它是。

希望这对你有帮助!

【讨论】:

伙计,你是我的英雄 :) 第 4b 点是我没有做的最后一件事。我花了大约 10 个小时的谷歌搜索。非常感谢!!! 这太棒了!它也适用于 Apache/PHP。我有 Apache 2.4 x86、PHP 5.6 x86、ImageMagick 7.0.3 x64 和 imagick 3.4.1 x86。【参考方案2】:

我找到了另一个来源。 PECL直接下载。

安装步骤

ImageMagick 安装

在哪里下载与 IIS 8.1 / Windows 2012r2 php x64 兼容的最新 ImageMagic:

http://windows.php.net/downloads/pecl/deps/

导航和下载: ImageMagick-6.8.8-vc9-x86.zip for PHP 32-bit, 5.4.xx

ImageMagick-6.8.8-vc11-x86.zip for PHP 32-bit, 5.5.xx

ImageMagick-6.8.8-vc11-x64.zip for PHP 64-bit, 5.5.xx

提示:

用 PHP 版本覆盖从 ImageMagick 6.8.8 Windows 版本中找到的 DLL。

如果文件被锁定在内存中,您需要重新启动。

php_imageMagick.dll 位置

http://windows.php.net/downloads/pecl/releases/imagick/

下载适当的 DLL。

您将获得最新版本的 ImageMagick DLL,php_imagemagick.dll(非线程安全和线程安全版本)。

提示:

如果缺少php5ts.dll,是你下载的php_imagemagic.dll版本不对,再下载其他版本。

如果您使用的是 IIS - 使用“NTS”版本 - php_imagemagick_nts.dll

如果您使用的是 Apache - 使用 'TS' 版本 - php_imagemagick_ts.dll

【讨论】:

我知道这在不久前就得到了回答,但这个答案似乎有用但不清楚。所以我下载了PECL zip;我该怎么办?我把它放在哪里? 用 PHP 版本覆盖从 ImageMagick 6.8.8 Windows 版本中找到的 DLL。您需要下载 ImageMagic 6.8.8【参考方案3】:

在windows中,当你想为php服务器添加扩展时,你应该检查3个参数:

    您的 php 服务器编译时使用的编译器版本(VC9 或 VC10),在 phpinfo() 中指明。

    phpinfo()中指明的PHP扩展API号。

    最重要的参数是您的网络服务器是 ts(线程安全)还是 nts(非线程安全),这在phpinfo() 中指明。

根据我的经验,我发现 IIS 默认是 nts,并且应该使用 nts php 库编译 php 扩展,以便在您的 Web 服务器中正常工作。但是,如果你想正确加载你的扩展,你的扩展和你的 php web 服务器在这三个参数上应该完全一样。

【讨论】:

【参考方案4】:

这是一个较老的问题,但我之前遇到过与 PHP/IIS 类似的问题。我建议您仔细检查几件事:

使用 phpinfo 页面查看您是否正在编辑正确的 php.ini 文件,查看第一页上的“加载的 php.ini 文件”(听起来很愚蠢,我以前做过 - 有时PHP 会在自己的文件夹中查找它,有时是 C:\Windows) 还尝试在 php.ini 中启用 display_errors 为 On 和 error_reporting 为 E_ALL 并查看 phpinfo 文件的最底部是否有错误消息。通常,它至少会承认无法加载您的 DLL。

【讨论】:

【参考方案5】:

在http://www.imagemagick.org/download/binaries/ 和http://valokuva.org/outside-blog-content/ 上都有多个 DLL 文件:一个用于 x64,另一个用于 x86。如果您的 Windows XP 是 32 位,则需要尝试 x86 DLL。

【讨论】:

【参考方案6】:

您不需要重新启动 Windows。您需要重新启动运行 PHP exe 的应用程序池。这可以通过重置 IIS 来完成(这是重置所有应用程序池的最佳选择)。或者回收运行 PHP 的应用程序池。

【讨论】:

以防万一它对任何人有帮助,我为此挣扎了好几天,无法让 ImageMagick 出现在 php_info 中。我确实完全重新启动了 IIS,但它仍然无法正常工作。最后,在遵循了我能找到的每一个建议之后,我终于通过重新启动计算机让它工作了。在某些情况下,有必要重新启动,我相信这是因为它会在您的 PATH 变量中添加一些内容。【参考方案7】:

在我对 imagick 文件夹和 c:\windows\temp 设置权限之前,没有任何效果(IUSR 为 imagick 读取/执行,为 windows\temp 读取/写入/执行)。

* 我不是 100% 确定 windows\temp 需要读/写/执行,但它在我的谷歌冲浪期间某处的网站上列出 *

很确定重启部分只是为了确保 imagick 文件夹在您的系统路径目录中并显示在 phpinfo() 中,它已经在我的路径中,所以我不必在设置权限后重新启动。

【讨论】:

【参考方案8】:

将 imagick 扩展与它们的基础和 PHP 版本相匹配是相当复杂的。因此,为了省去安装的麻烦,我建议使用带有 Imagick 及其扩展的服务器堆栈,例如 WPN-XM。

【讨论】:

【参考方案9】:

我知道这是个老问题,但我是通过谷歌来到这里的,所以可能其他人也会。对于他们来说,这是一个最快和最简单的解决方案: https://mlocati.github.io/articles/php-windows-imagick.html

它对我有用,而且比这里大多数投票的答案要容易得多(这对我来说似乎太复杂了,比如将 imagick 安装为 cmd.com 命令 - 有什么用?)

【讨论】:

【参考方案10】:

在我的情况下,Windows 重新启动(在步骤 4 中提到)起到了作用。

【讨论】:

以上是关于使用 php/windows 安装 ImageMagick 扩展的主要内容,如果未能解决你的问题,请参考以下文章

安装php7(windows7)

PHP Windows环境部署

Swoole PHP windows composer

使用 imagemagick 减少图像宽度和高度而不模糊

Boost::Python 为具有继承的类绑定

GraphicsMagick 网络摄像头,带有印章和私人区域