Wouter Konecny
Wouter Konecny

Reputation: 3540

ImageMagick Brew installation with PHP Module in Mac OS X

I have installed ImageMagick using brew install imagemagick. This all worked fine and I can run any ImageMagick command from the Terminal / Command line.

Now when I try to use the ImageMagick classes in PHP, I get an error Class 'Imagick' not found in .... I guess this is because the ImageMagick module is not loaded.

Could anyone help me to get this thing working in PHP? Thanks!

Additional info:
Mac OS X Version: 10.8: Mountain Lion
PHP Version: 5.3.13

Upvotes: 42

Views: 88728

Answers (13)

Bhavesh Prajapati
Bhavesh Prajapati

Reputation: 171

I have installed the Magento 2 project and I want to run the catalog:image:resize command and our project image processing config is set to imagic(not php GD). enter image description here

Admin -> Stores -> Configuration -> Advanced -> Developer -> Image Processing Settings : imagic

I am using brew tap shivammathur/php to use the old php version with a brew package manager.

https://github.com/shivammathur/homebrew-php#install-php

I have followed this tutorial to install the required packages to use Imagic.

https://ma.ttias.be/install-phps-imagick-extension-on-mac-with-brew/

I have also verified php module list using php -m | grep -i magic

imagic is installed but php-imagic is not found.

enter image description here

But I found this file while running this command grep -rni "imagic" /usr/local/Cellar/[email protected]/7.4.33_4/

/usr/local/Cellar/[email protected]/7.4.33_4/include/php/ext/imagick/php_imagick_shared.h

I have run brew install php7.4-imagick and restart php. Then I have run brew install shivammathur/php/[email protected]. I have try many commnad like brew install php74-imagick and also search package for php74 but not found any usefull using brew search imagick this command.

Then I have run these command in sequence and it worked.

brew install imagemagick
brew install pkg-config
pecl install imagick
brew services restart [email protected]

Thank you.

Upvotes: 0

anytimecoder
anytimecoder

Reputation: 7684

php72-imagick is now deprecated as imagick is part of php binary itself. Use pecl to install imagick e.g.:

brew install php
brew install imagemagick
brew install pkg-config
pecl install imagick

Upvotes: 51

Maticb
Maticb

Reputation: 33

I cannot add comments because of reputation, but to add to this anwser:

answered Apr 12 at 16:52

Grzegorz Miśkiewicz

I was getting a missing php.h file, so as per Installing xdebug on MacOs Mojave - 'php.h' file not found I installed the necessary file via the below command:

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

Upvotes: 0

Grzegorz Miśkiewicz
Grzegorz Miśkiewicz

Reputation: 426

I've looking for correct way to install imagick on Mojavie and found solution that fully worked.

  1. brew install imagemagick@6
  2. brew install [email protected]
  3. Install headers (Xcode-select --install)
  4. Download imagick source code from: https://pecl.php.net/package/imagick
  5. Open terminal and enter unzipped folder imagick-3.4.3/imagick-3.4.3 (in my case)
  6. Run command phpize
  7. ./configure
  8. make

And now if error occurs like MagicWand not found, edit file Makefile and look for CPPFLAGS = -I/usr/local/opt/imagemagick@6/include/. Inspect if in include folder there is no other folder. In my case it should be like this: CPPFLAGS = -I/usr/local/opt/imagemagick@6/include/ImageMagick-6

save and return to terminal and type make (after finished) sudo make install

imagick.so is located in imagick-3.4.3/imagick-3.4.3/modules

Upvotes: 4

Jamie Ross
Jamie Ross

Reputation: 244

Ok after 1 hour at this I have figured it out. The mac is not giving the pecl script permissions to make a PHP directory. To resolve do as follows.

brew install imagemagick
Sudo pecl install imagick .  
php --ini | grep "Loaded Configuration File"
Add extension=imagick.so under extensions.

The install will be complete. Then, to test run:

php -r "print(class_exists('imagick'));"

Upvotes: 2

Reza Babaei
Reza Babaei

Reputation: 1075

this one worked for me:

brew install imagemagick       # If it's not already installed
mkdir /usr/local/lib/php/pecl  # On my system this dir didn't exist and this caused pecl install to fail
pecl install imagick

here

Upvotes: 13

Kurt Pfeifle
Kurt Pfeifle

Reputation: 90203

Your ImageMagick installation is not enough. You also need the Imagick package (possibly called php72-imagick or similar for home brew).

Imagick doesn't do the work itself, it is a native PHP extension for creating and modifying images using the ImageMagick API.

Try to search for the exact name of the package via brew search imagick.

Upvotes: 32

Henry
Henry

Reputation: 7881

I had the same error having already installed imagemagick and php71-imagick.

brew upgrade imagemagick - did the trick for me.

You may need sudo:

sudo brew upgrade imagemagick

You may need to restart apache / php-fpm / <other webserver>.

Upvotes: 0

Frank Hag
Frank Hag

Reputation: 327

I had the same issue. These are the steps that worked for me if you are using php 5.6

  1. brew install php56-imagick
  2. brew install imagemagick
  3. find /usr/local/Cellar -name "imagick.so"
    copy the path from the output of this command into your php.ini file
    e.g. extension=/usr/local/Cellar/php56-imagick/3.3.0_2/imagick.so save your file. Now to double check that the imagemagick class exists type
  4. php -r "print(class_exists('imagick'));"

Brew symlinking wasn't working for me so I had to put the full pathname into the php.ini file to get it to work. Hope this helps

Upvotes: 17

diazwatson
diazwatson

Reputation: 141

Try:

brew install homebrew/php/php53-imagick

Upvotes: 4

Mr. 14
Mr. 14

Reputation: 9528

I'm using Yosemite. For me, the solution is a combination of the answer and comment already listed here.

brew install imagemagick
brew install php55-imagick

Edit /etc/php.ini to include imagick

extension=/usr/local/Cellar/php55-imagick/{version of php55-imagick}/imagick.so

Example:

extension = /usr/local/Cellar/php55-imagick/3.1.2_1/imagick.so

Upvotes: 19

Daniel Feder
Daniel Feder

Reputation: 567

I just did this after a lot of experimenting. For now, this seems to be the way to do it for php 5.3:

brew tap josegonzalez/php
brew tap homebrew/dupes
brew install php53-imagick

No idea who Jose Gonzalez is but apparently we are in his debt....

Upvotes: 45

Jill-J&#234;nn Vie
Jill-J&#234;nn Vie

Reputation: 1841

From: php error: Class 'Imagick' not found

Did you add extension=imagick.so to your php.ini (or /etc/php.d/imagick.ini) file?

Upvotes: 0

Related Questions