无法加载imagick库

17

我已经从这里安装了imagick(ImageMagick-7.0.3-1-Q16-x64-dll)和dll文件(TS 32位)从这里。然后将CORE_RL_*复制到C:\xampp\apache\bin,但是当我运行laravel服务器时仍然出现以下错误。

错误:警告:PHP启动:无法加载动态库'C:\xampp\php\ext\php_imagick.dll' - 找不到指定的模块。 在未知行上

同时,我将dll文件放置在C:\xampp\php\ext\php_imagick.dll中。

此外,imagick在phpinfo()中显示。 进入图像描述

当我在laravel中使用它时,出现以下错误。 进入图像描述


1
我从未在Windows上安装过它,无法直接帮助您。不管怎样,我知道需要一些时间来使其正常工作,请尝试按照这些说明进行操作https://dev59.com/I3XZa4cB1Zd3GeqPAflk#36378764 - phaberest
@phaberest,我按照你提供的链接进行了操作,但仍然出现相同的错误。警告:PHP启动时无法加载动态库'C:\xampp\php\ext\php_imagick.dll' - 指定的模块找不到。位于未知行上。 - Jamal Abdul Nasir
为什么不使用带有Vagrant的Laravel Homestead而是疯狂尝试使用Windows作为测试环境呢? - phaberest
嘿,Jamal Abdul Nasir,你修好了吗? - Iññoceñt Ùšmâñ
请确保您的计算机上安装有Visual C++ Redistributable Package(https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170)。这解决了我的问题。 - Mher
显示剩余2条评论
6个回答

35

在Windows上让Imagick正常工作一直都是有点问题的,正如这里指出的那样,这是一个很好的指南 https://dev59.com/I3XZa4cB1Zd3GeqPAflk#36378764

但它忽略了一个重要的点:

您无需将二进制文件放入PHP文件夹中!

所以,以下是我每次需要执行此操作时自己遵循的步骤。 这适用于Apache,Nginx或IIS。

步骤1

找出您的PHP版本和设置

enter image description here

您需要版本、体系结构、编译器和线程安全

如果禁用了线程安全,则为NTS;如果启用了线程安全,则为TS

步骤2

获取并安装ImageMagick副本,并确保其与您的架构匹配,这也需要dll.exe而不是静态版本。

关于Q8和Q16,我会让您自己决定,但两个版本都可以使用

链接

我建议将安装目录名称更改为类似于C:\Imagemagick这样的通用名称,因为我过去曾在PHP和Windows中使用默认目录名称遇到一些问题。

只需安装,但确保您选中了添加应用程序路径,并且我通常也会选择传统实用程序。

enter image description here

安装完成后,转到环境变量并确保它实际上位于路径中。无需将任何内容复制到您的PHP文件夹中。

为了确保一切正常工作,请打开命令行并键入convert --version,您应该会得到一个响应。

步骤3

不幸的是,这是困难的部分,可能需要一些试错。我发现以下提供的php_imagick.dll最好,似乎有10次中有9次可以工作。

http://www.peewit.fr/imagick/

只需选择与您的安装相匹配的版本即可。

如果这样做不起作用,请转到php.net并尝试每个版本,直到找到一个可以工作的(从最新版本开始)。

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

一旦您有了一个php_imagick.dll,将其放入php/ext/文件夹中。

然后找到您的php.ini文件,跳到底部(或任何地方,您的扩展名在哪里),然后添加extension=php_imagick.dll

步骤4

重启PHP(或计算机),如果还不能工作,则尝试不同的php_imagick.dll并重复。

如果上述方法不起作用

然后尝试稍旧版本的Imagick,我通常使用版本6.8.6-8 Q16。

请注意,我只在Windows 7和Windows Server 2008、2008 R2、2012和2012 R2全部x64与x86 PHP上进行过此操作。

如果仍然无法工作,则可能需要将文件复制到您的Imagick目录中,这通常会引起更多问题,但如果您没有其他办法,请尝试一下。


3
你最后一句话解决了我的问题……从带有php_imagick.dll的档案中复制CORE_RL文件直接放入imgagick安装文件夹中。不需要覆盖现有的DLL文件,只需添加缺失的文件即可。 - rwired
1
O|O:增强教程:http://ourcodeworld.com/articles/read/349/how-to-install-and-enable-the-imagick-extension-in-xampp-for-windows。测试环境:XAMPP版本7.1.1,Php 7.1.1,Windows 10 Pro,ImageMagick 6.9.3-7-vc14-x86.zip。 - Felix Aballi
最后一句话我也是这样! - chocochaos
太好了,这真是个巨大的帮助!谢谢你。可以确认这仍然有效。 - JanBoehmer

25

我遇到了这个问题,只不过我是在命令行中使用 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信息即可。


2
谢谢,我发现这个答案更加直接。WinNMP需要在包含php.exe的文件夹中放置所有的.dll和.pdb文件才能让imagick工作。然后将php_imagick.dll放入/ext文件夹中。始终检查php日志,它们会给你提示。 - AzDesign
将Imagick的.dll文件放入包含php.exe的php文件夹中。你,我的朋友,值得一枚奖章。 - cliffclof
谢谢。我在GitHub上维护着大量的仓库,主要是PHP和C++项目。点赞或复制并不完全是一种奖章,但请随意浏览仓库列表,并为任何感兴趣的项目点赞或复制:https://github.com/cubiclesoft/ - CubicleSoft

7
这是因为缺少依赖项。如果遇到相同的错误无法加载动态库'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列表前要注意的事项:

  1. 检查PHP版本。
  2. 检查体系结构(x64/x86)。
  3. 检查线程安全(启用/禁用)。

enter image description here

注意:以上解决方案仅适用于XAMPP用户。


-1

我在php.ini文件中将php_imagick更改为php_imagick.dll,然后发生了这种情况


-1

我曾经有同样的问题。结果是我需要安装完整的ImageMagic应用程序,而不仅仅是ImageMagic PHP扩展。 我还设置了MAGICK_HOME环境变量。


-1
步骤 1

首先,您需要根据您的 PHP 版本https://pecl.php.net/package/imagick/3.5.1/windows 下载 Imagick 库。

步骤 2

然后将 ImageMagickObject.pdbImageMagickObject.dllLICENSELICENSE.IMAGEMAGICKphp_imagick.dllphp_imagick.pdb 复制并粘贴到 C:xampp/php/ext 文件夹中。

步骤 3

php.ini 文件中,您需要添加:

extension = extension=php_imagick.dll
步骤4

您需要从上面的链接中下载并提取.zip文件,将其粘贴到C:驱动器中,并将文件夹重命名为php_imagick-3-5-1

步骤5

设置环境变量,例如:

environmental variables

重新启动你的电脑,然后再检查一次。


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