在Windows上让Imagick正常工作一直都是有点问题的,正如这里指出的那样,这是一个很好的指南 https://dev59.com/I3XZa4cB1Zd3GeqPAflk#36378764
但它忽略了一个重要的点:
您无需将二进制文件放入PHP文件夹中!
所以,以下是我每次需要执行此操作时自己遵循的步骤。 这适用于Apache,Nginx或IIS。
找出您的PHP版本和设置
您需要版本、体系结构、编译器和线程安全
如果禁用了线程安全,则为NTS;如果启用了线程安全,则为TS
获取并安装ImageMagick副本,并确保其与您的架构匹配,这也需要dll.exe而不是静态版本。
关于Q8和Q16,我会让您自己决定,但两个版本都可以使用
我建议将安装目录名称更改为类似于C:\Imagemagick
这样的通用名称,因为我过去曾在PHP和Windows中使用默认目录名称遇到一些问题。
只需安装,但确保您选中了添加应用程序路径,并且我通常也会选择传统实用程序。
安装完成后,转到环境变量并确保它实际上位于路径中。无需将任何内容复制到您的PHP文件夹中。
为了确保一切正常工作,请打开命令行并键入convert --version
,您应该会得到一个响应。
不幸的是,这是困难的部分,可能需要一些试错。我发现以下提供的php_imagick.dll最好,似乎有10次中有9次可以工作。
只需选择与您的安装相匹配的版本即可。
如果这样做不起作用,请转到php.net并尝试每个版本,直到找到一个可以工作的(从最新版本开始)。
http://windows.php.net/downloads/pecl/releases/imagick/
一旦您有了一个php_imagick.dll,将其放入php/ext/
文件夹中。
然后找到您的php.ini
文件,跳到底部(或任何地方,您的扩展名在哪里),然后添加extension=php_imagick.dll
重启PHP(或计算机),如果还不能工作,则尝试不同的php_imagick.dll并重复。
然后尝试稍旧版本的Imagick,我通常使用版本6.8.6-8 Q16。
请注意,我只在Windows 7和Windows Server 2008、2008 R2、2012和2012 R2全部x64与x86 PHP上进行过此操作。
如果仍然无法工作,则可能需要将文件复制到您的Imagick目录中,这通常会引起更多问题,但如果您没有其他办法,请尝试一下。
我遇到了这个问题,只不过我是在命令行中使用 PHP(PHP CLI)。问题出在主要的 php_imagick.dll
文件所依赖的库上。PHP会尝试加载这个扩展,但由于Windows找不到 CORE_RL_
DLL文件,因此该扩展将无法加载,错误/警告消息也会出现。需要了解Windows如何加载DLL库:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx
虽然相当复杂,但你可以看到,Apache /bin
目录技巧能起作用的原因是 httpd.exe
位于该目录中。然而,在使用PHP CLI时,DLL库必须位于与 php.exe
相同的目录中。
如果您不希望重复的DLL库存在,可以将包含 php.exe
的目录添加到系统路径中,并将所有的 CORE_RL_
DLL文件放在那里。PATH 是最后被搜索的,但它可以正常工作。如果您不想在系统路径中添加不必要的条目,则只需在启动Apache时设置额外的PATH信息即可。
'php_imagick'
,请按照以下步骤操作:
访问https://pecl.php.net/package/imagick,选择一个稳定版本并单击DLL链接。
从DLL列表中单击适合您PHP版本的链接。
下载php_imagick zip文件后,将其解压缩并将php_imagick.dll
文件复制到C:\xampp\php\ext
文件夹中。
从php_imagick zip文件中提取所有DLL文件(除了php_imagick.dll
)到PHP根目录(您有php.exe的位置)。例如:对于XAMPP用户,C:\xampp\php
文件夹。
将extension=php_imagick
添加到您的php.ini文件中。
重新启动Apache服务器。
选择DLL列表前要注意的事项:
注意:以上解决方案仅适用于XAMPP用户。
我在php.ini文件中将php_imagick更改为php_imagick.dll,然后发生了这种情况
我曾经有同样的问题。结果是我需要安装完整的ImageMagic应用程序,而不仅仅是ImageMagic PHP扩展。 我还设置了MAGICK_HOME环境变量。
首先,您需要根据您的 PHP 版本 从 https://pecl.php.net/package/imagick/3.5.1/windows 下载 Imagick 库。
然后将 ImageMagickObject.pdb
、ImageMagickObject.dll
、LICENSE
、LICENSE.IMAGEMAGICK
、php_imagick.dll
和 php_imagick.pdb
复制并粘贴到 C:xampp/php/ext
文件夹中。
在 php.ini
文件中,您需要添加:
extension = extension=php_imagick.dll
您需要从上面的链接中下载并提取.zip
文件,将其粘贴到C:
驱动器中,并将文件夹重命名为php_imagick-3-5-1
设置环境变量,例如:
重新启动你的电脑,然后再检查一次。
Visual C++ Redistributable Package
(https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170)。这解决了我的问题。 - Mher