使用php / windows安装ImageMagick扩展

时间:2010-05-18 14:59:01

标签: php iis imagemagick windows-server-2003

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

实际上有一个相同的服务器,我们可以安装ImageMagick而没有任何问题。它运行完全相同的PHP版本。使用以下步骤进行安装,但它似乎无法在此服务器上运行。 ImageMagick本身已安装但php不会加载扩展名。

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

安装步骤

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

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

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

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

  3. 您必须编辑php.ini文件并添加新扩展程序:

    extension=php_imagick.dll
    
  4. 保存php.ini并重启Apache服务器。 (如有必要,请重新启动Windows)

  5. phpinfo()应显示imagick已启用。

10 个答案:

答案 0 :(得分:9)

发现非常用户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)的观点是他的评论:"覆盖从ImageMagick发现的DLL 6.8.8 Windows版本的PHP版本"。

所以,这就是我所做的(基于Buttercup解决方案,我必须再次说一遍又一次,非常感谢你!): 1)从http://www.imagemagick.org/script/binary-releases.php#windows下载最新的ImageMagick EXE安装程序 在我的情况下,我下载了第一个可用HTTP下载的文件,标记为#34; Win64动态,每像素16位" (文件名:ImageMagick-6.9.0-0-Q16-x64-dll.exe)

2)运行刚刚下载的安装程序。我在一个简单的路径中安装它,比如C:\ ImageMagick6.9.0(但我不认为将它从程序文件移开是如此重要)。另外,我在安装过程中没有更改其默认值中的任何其他参数。

3)从PECL网站下载最新的PHP_Imagick DLL文件:http://pecl.php.net/package/imagick 我选择了一个稳定的(非Beta或RC)版本,在我的案例3.1.2中,点击" Windows徽标" +" 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)

4)解压缩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没有被覆盖。

5)编辑并保存PHP.ini文件以添加这个简单的行: 延长= php_imagick.dll

6)重新启动你的服务器(不幸的是我没有找到任何重新启动的替代方案:来自admin命令提示符的IISRESET也没有工作)。

7)重新启动完成后,通过浏览器远程访问您的phpinfo.php文件,以验证Imagick模块是否正常。就我而言,它是。

希望这可以帮助,在那里!

答案 1 :(得分:4)

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

安装已采取的步骤

ImageMagick安装

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

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

答案 2 :(得分:2)

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

  1. 您的php服务器编译的编译器版本(VC9或VC10),在phpinfo()中显示。

  2. PHP扩展API编号,显示在phpinfo()

  3. 最重要的参数是您的网络服务器是否是phpinfo()中指示的ts(线程安全)或nts(非线程安全)。

  4. 我发现我的经验是默认情况下IIS是nts,并且应该使用nts php库编译php扩展,以便在您的Web服务器中正常工作。但是,如果要正确加载扩展程序,您的扩展程序和php Web服务器应该与这三个参数完全相同。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

*我并非100%确定windows \ temp需要读取/写入/执行,但在Google google浏览期间某个网站上列出了它

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

答案 7 :(得分:0)

将imagick扩展与其基础和PHP版本相匹配是相当复杂的。因此,为了消除安装的麻烦,我建议使用一个服务器堆栈,它运送Imagick及其扩展名,如WPN-XM

答案 8 :(得分:0)

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

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

答案 9 :(得分:-1)

在我的情况下,Windows重启(在步骤4中提到)就可以了。