首页 > 解决方案 > PHP 无法加载 imagick 扩展(Windows)

问题描述

多年来,我对此的看法为零。在此之前,我们总是无法加载 php_imagick.dll。突然,这个过程在 2 台机器上失败了(也许更多,但我们肯定知道 2 台,都是开发机器)。什么都没有改变 - 没有更新,没有配置,什么都没有,只是突然,在 2 台开发机器上它失败了。这不会在至少 1 台其他开发机器和我们的测试机器上失败(幸运的是在生产中也没有失败)。

C:\windows\system32>C:\PHP\php.exe -cC:/php/devrc/php.ini -m

警告: PHP Startup: Unable to load dynamic library 'imagick' (试过: ext\imagick (The specified module could not be found.), ext\php_imagick.dll (The specified module could not be found.)) in Unknown on line 0

我已经尝试了我能想到的一切,据我所知,这些都是相同的。

我什至拿了一个全新的虚拟机。将文件从故障机器(c:\PHP 和 c:\imagemagick)复制到该机器。安装了vcredist140。因同样的问题而失败。将 c:\imagemagick 添加到 %PATH% 变量中。作品!

我已经验证 c:\imagemagick 在路径中,甚至尝试将文件复制到 c:\PHP,仍然失败。发生了一些变化,影响了 2 台机器,而且只有 2 台(到目前为止)机器。所有机器都是 Windows 10 21H1 或 Server 2019,失败的 2 台是 Windows 10 21H1。

我们正在使用 Jan E 在https://www.apachelounge.com/viewtopic.php?t=6359上的 7.4.21 构建,包括为 c:\imagemagick 文件夹创建的工件。但是,我也尝试了https://mlocati.github.io/articles/php-windows-imagick.html

我知道它们是相同的,因为我们将 c:\PHP 和 c:\imagemagick 都放在 Git 存储库中。

标签: phpimagemagickimagick

解决方案


我建议使用 deplister.exe(包含在 windows.php.net 的所有二进制 zip 中)来跟踪依赖项。所以打电话deplister php_imagick.dll;这应该列出所有依赖项,以及是否可以找到它们。


推荐阅读