Learn how to configure the Imagick extension in XAMPP for Windows.


Imagick is a native PHP extension to create and modify images using the ImageMagick API. The name causes some confusion as people think that ImageMagick and Imagick are the same thing, however they aren't. You can use ImageMagick without Imagick but you need both Imagick and ImageMagick installed to run it within your PHP code.

You can check with PHP code wheter the Imagick extension is installed or not using:

<?php 

if (!extension_loaded('imagick')){
    echo 'imagick not installed';
}

Or just errors in your code that implements Imagick will tell you ... :

Attempted to load class "Imagick" from the global namespace. Did you forget a "use" statement?

Class 'Imagick' not found

In XAMPP for Windows, Imagick isn't built-in, therefore is up to you its installation and implementation. If you have already searched previously how to install Imagick in XAMPP to make it work, and you just can't do it, you're probably out of bounds and you want to kill yourself.

Fortunately, in this article you'll find the definitive installation of Imagick for XAMPP in Windows.

Pre-installation notes

We need to mention that the installation of Imagick is not easy (can be a little confusing) and you may get errors during the installation if you don't follow carefully every step by step. Besides, you need to know the following information about your PHP distribution:

Note: according to the version of XAMPP that you use, these values can vary.

Name Default value
Architecture x86 (XAMPP Default)
Thread Safety 

Enabled

TS: Stands for Thread Safety Enabled

NTS: Stands for Thread Safety Disabled

Compiler

MSVC11 (Visual C++ 2012)

Some Imagick version are compiled with a different versions e.g VC9, VC11 (in this case), VC14

You can get those values with the phpinfo() function of PHP executing this function within an empty script:

<?php

phpinfo();

Once you know the values, these will instruct with files with which architecture you need to download from all the following steps.

Note: don't forget neither to execute every setup with administrator rights.

1. Download and install ImageMagick for Windows

Navigate in your browser to the Downloads area of the website of Imagick and scroll to the Windows zone. ImageMagick runs in almost every version for Windows (from Windows server 2009, XP to Windows 10), now from this list is important to download the latest available version with X86 architecture and DLL version because that's the architecture that XAMPP uses (normally, if not refer to the PHPINFO and download the correct version, e.g ImageMagick-<version>-Q16-x86-dll.exe):

Download Imagick Setup Windows

Download the executable and wait. Till the moment, we don't need to configure anything for PHP, just proceed with the installation of Imagick for Windows and don't forget to check the option to add Imagick to the PATH:

Add Imagick to the PATH in Windows

Once the setup finishes, you can test Imagick in a new command prompt executing (that should print the version in the console):

magick -version

2. Download Imagick for PHP

Now navigate to the Imagick package in the PECL website here and select the DLL version from the latest available version (in case you've downloaded an older version of ImageMagick then download a version that accepts your version):

Imagick PECL package setup

Then a new window will load, in this page scroll to DLL List and click on the right version for your PHP version with correct architecture (of XAMPP not your operative system) and the Thread Safe in case that it's enabled in your distribution (Refer to phpinfo to know wheter your php distribution uses Thread Safe or not):

PHP Imagick DLL version

This will start the download of a zip file "php_imagick-<version>-<thread-safe-or-not>-<php-compiled-version>-<architecture>.zip". From this .zip you will need to extract only the php_imagick.dll file. Copy php_imagick.dll file and paste in the php/ext folder inside your xampp installation path (tipically C:\xampp\php\ext):

Copy dll in ext directory of php

Then, proceed to enable the extension in your php.ini file by adding the following line:

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; Add the following line where the other extensions are loaded
extension=php_imagick.dll

Now the extension is loaded, but Imagick still won't work as it won't even be recognized as an extension if you check the phpinfo file because we need to load all the methods and the binaries that you can retrieve from the next step.

3. Download required Imagick binaries

At this point you may be asking to yourself, really dude ? 3 different downloads? The problem with Imagick is that there are a lot of builds from different sources and if you don't download and install the right ones, it wont work or it will be loaded but if you check the Imagick extension (later, not yet) in phpinfo you'll see :

ImageMagick number of supported formats: 0

That's why you need to follow the steps as mentioned, otherwise you won't make Imagick to work. To prevent any implementation error, the binaries needs to come from the same source, in this case windows.php.net. To download the required binaries, navigate to PECL Deps here and search in the list for Imagick:

ImageMagick binaries Windows XAMPP

Download the version that matches with the architecture of xampp and check the compiler version. In this case, we download the third option with a filesize of about 30MB (ImageMagick-6.9.3-7-vc11-x86.zip). Now, extract all the files of this zip in a folder wherever you want, in this case we are going to extract the content of the zip in a folder in the desktop. 

Once the content of the file is extracted, open the bin folder and copy all the .dll files (except ImageMagickObject.dll) that would be about 146 files (with prefixes CORE_* and IM_MOD_*) and then paste the copied files into the apache/bin folder of xampp (tipically C:\xampp\apache\bin).

Now start the apache service (or restart it in case it's already running) and go to phpinfo again. Now you should see imagick loaded as an extension:

PHPINFO Imagick Extension Loaded succesfully

And you can finally after hours of suffering, use Imagick with PHP for XAMPP in Windows.

In case of console error

If after the implementation you still getting the following message error everytime you use PHP (at least in the console):

PHP Warning: PHP Startup: Unable to load dynamic library 'C:\xampp\php\ext\php_imagick.dll' - The specified module could not be found.

You will need to add the bin directory of Apache (C:\xampp\apache\bin) to the PATH environment variable of Windows and the problem will be solved.

Happy coding !


Senior Software Engineer at Software Medico. Interested in programming since he was 14 years old, Carlos is a self-taught programmer and founder and author of most of the articles at Our Code World.

Sponsors