我已经从here(ImageMagick-7.0.3-1-Q16-x64-dll)和here的dll(TS 32位)安装了imagick。并将CORE_RL_*
复制到C:\xampp\apache\bin
但仍然在运行laravel服务器时出现以下错误。
错误:警告:PHP启动:无法加载动态库'C:\ xampp \ php \ ext \ php_imagick.dll' - 找不到指定的模块。 在第0行的未知中
另外,我将dll文件放在C:\xampp\php\ext\php_imagick.dll
。
答案 0 :(得分:15)
让Imagick在Windows上工作总是有点受欢迎,因为这里指出的是一个很好的指南 http://stackoverflow.com/a/36378764/1090867
但它错过了重要的一点
您不需要将二进制文件放入PHP文件夹中!
所以这是我每次需要这样做时都遵循的步骤。这适用于apache,nginx或IIS。
找出你的php版本和设置
您需要版本,架构,编译器和线程安全
如果禁用线程安全,则 NTS 启用, TS
安装一个imageMagick的副本它只是确保它可以覆盖你的架构,这也需要是dll.exe而不是静态版本。
关于Q8和Q16,我会留给您,但两个版本都可以使用
http://www.imagemagick.org/script/binary-releases.php#windows
我建议将安装目录名称更改为通用的名称
C:\Imagemagick
因为我以前在使用PHP和Windows的te默认目录名时遇到了一些问题。
只需安装,但请确保勾选添加应用程序路径,我通常也会勾选旧版工具。
安装完成后,转到环境变量并确保它实际位于路径中。 无需将任何内容复制到您的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
上的每一次真正完成此操作如果这仍然不起作用,那么您可能需要将CORE_RL
文件复制到您的imagick目录中,这通常会导致更多问题,但如果您的想法不够用,那就试试吧
答案 1 :(得分:6)
我刚遇到这个问题。只有我在命令行上使用PHP(PHP CLI)。问题是主php_imagick.dll
文件具有的依赖关系。 PHP将尝试加载扩展,但由于Windows无法找到CORE_RL_
DLL,扩展将无法加载,并且将显示有关无法加载DLL的错误/警告消息。它有助于了解Windows如何加载DLL:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx
这很复杂,但你可以看到Apache /bin
目录技巧与Apache一起工作的原因是httpd.exe
位于该目录中。但是,使用PHP CLI时,DLL需要与php.exe
位于同一目录中。
如果您不希望重复的DLL浮动,请将包含php.exe
的目录添加到系统PATH并在那里填充所有CORE_RL_
DLL。 PATH是搜索到的最后一件事,但它会正常工作。如果您不想在系统PATH中使用虚假条目,则仅在Apache启动期间设置额外的PATH信息。