Reputation: 2667
I have installed the imagick from here (ImageMagick-7.0.3-1-Q16-x64-dll) and the dll (TS 32 bit) from here. And also copiend the CORE_RL_*
to the C:\xampp\apache\bin
BUT still i get the following error when i run the laravel server.
ERROR: Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_imagick.dll' - The specified module could not be found. in Unknown on line 0
Also, I placed dll file in C:\xampp\php\ext\php_imagick.dll
.
Also, the imagick is shown in the phpinfo()
.
And when i use it using laravel i get the following error.
Upvotes: 19
Views: 67076
Reputation: 1
First you have to download the Imagick library according to your PHP Version from https://pecl.php.net/package/imagick/3.5.1/windows.
Then copy and paste ImageMagickObject.pdb
, ImageMagickObject.dll
, LICENSE
, LICENSE.IMAGEMAGICK
, php_imagick.dll
and php_imagick.pdb
into the C:xampp/php/ext
folder.
In the php.ini
file, you have to add:
extension = extension=php_imagick.dll
You have to extract the .zip
file of the download from the above link, paste it into the C:
drive and rename the folder to php_imagick-3-5-1
Set environmental variables like:
Restart you PC and check again.
Upvotes: -1
Reputation: 101
I changed php_imagick in php.ini file to php_imagick.dll and it happened
Upvotes: 0
Reputation: 2595
This is because the dependencies are missing. Those who are facing the same error Unable to load dynamic library 'php_imagick'
, Please follow the below steps
Go to https://pecl.php.net/package/imagick choose a stable version and click on the DLL link.
From the DLL list click the link which, is suitable for your PHP version.
After downloading the php_imagick zip file, extract it and copy the php_imagick.dll
file to C:\xampp\php\ext
folder.
Extract all DLL files from the php_imagick zip file (except php_imagick.dll
) to the PHP root directory (where you have php.exe). Ex: For XAMPP user C:\xampp\php
folder.
Add extension=php_imagick
to your php.ini file.
Restart the Apache server.
Things to keep in mind before choosing from the DLL list.
N.B: Above solution is for XAMPP users only.
Upvotes: 12
Reputation: 478
getting Imagick to work on Windows has always been a bit hit and miss as pointed out here is a good guide http://stackoverflow.com/a/36378764/1090867
But it misses an important point
You do not need to put the binary into the PHP folder!
So here are the steps I follow myself every time I need to do this. This should work for apache, Nginx, or IIS.
find out your php version and setting
You need to version, Architecture, Compiler and Thread Safety
if Thread Safety is disabled this is NTS is enabled it will TS
Get and install a copy of ImageMagick and make sure it matches your Architecture, this also needs to be dll.exe rather than the static version.
Regarding Q8 and Q16 I'll leave that to you but both versions will work
I recommend changing the install directory name to something generic like
C:\Imagemagick
since I've had some problems in the past with the default directory name with PHP and windows.
Just install but make sure you tick add application path and I normally tick the legacy utils as well.
Once it's installed go to your environment variables and make sure it is actually in the path. There is no need to copy anything to your PHP folder
Just to make sure everything is working open the command line and type convert --version
you should get a response
This unfortunately is the hard part and can be a bit of trial and error. I've found the following provides the best php_imagick.dll that seems to work 9 times out of 10
Just pick the version that matches your install.
If this doesn't work then go to php.net and try each version until one works... (start at the latest)
http://windows.php.net/downloads/pecl/releases/imagick/
Once you have a php_imagick.dll put it into your php/ext/
folder
thne locate your php.ini
file go to the bottom (or whereever your extensions are) and add extension=php_imagick.dll
Restart PHP (or your computer) and it should be working if not try a different php_imagick.dll and repeat.
Then try a slightly older version of Imagick I normally use version 6.8.6-8 Q16.
Please note I've only ever really done this on Windows 7 and Windows Server 2008, 2008 R2, 2012, and 2012 R2 all x64 with x86 PHP
If this still doesn't work then you probably need to copy over the CORE_RL
files into your Imagick directory this normally causes more issues but if you are running out ideas then give it a go
Upvotes: 37
Reputation: 2512
I just ran into this issue. Only I'm using PHP on the command line (PHP CLI). The problem is the dependencies that the main php_imagick.dll
file has. PHP will attempt to load the extension but since Windows can't find the CORE_RL_
DLLs, the extension will fail to load and the error/warning message about being unable to load the DLL will appear. It helps to know how Windows loads DLLs:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx
It's pretty convoluted but you can see that the reason the Apache /bin
directory trick works with Apache is that httpd.exe
is located in that directory. However, when using PHP CLI, the DLLs need to be located in the same directory as php.exe
.
If you don't want duplicate DLLs floating around, add the directory containing php.exe
to the system PATH and plop all the CORE_RL_
DLLs there. The PATH is the last thing searched, but it'll work fine. If you don't want spurious entries in your system PATH, then set the extra PATH information only during startup of Apache.
Upvotes: 27