在带有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 dir并将其重命名为php_imagick.dll
您必须编辑php.ini
文件并添加新扩展程序:
extension=php_imagick.dll
保存php.ini
并重启Apache服务器。 (如有必要,请重新启动Windows)
phpinfo()
应显示imagick
已启用。
答案 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个参数:
您的php服务器编译的编译器版本(VC9或VC10),在phpinfo()
中显示。
PHP扩展API编号,显示在phpinfo()
。
最重要的参数是您的网络服务器是否是phpinfo()
中指示的ts(线程安全)或nts(非线程安全)。
我发现我的经验是默认情况下IIS是nts,并且应该使用nts php库编译php扩展,以便在您的Web服务器中正常工作。但是,如果要正确加载扩展程序,您的扩展程序和php Web服务器应该与这三个参数完全相同。
答案 3 :(得分:1)
这是一个较旧的问题,但之前我遇到过与PHP / IIS类似的问题。有几件事我建议仔细检查:
答案 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中提到)就可以了。