DEV Community

Nasrul Hazim Bin Mohamad
Nasrul Hazim Bin Mohamad

Posted on

How to Install and Enable Imagick for PHP 8.3 on macOS

If you're working on macOS and need to install Imagick for PHP 8.3, you might run into issues where the installation defaults to an older version of PHP, such as PHP 8.0. In this post, I'll walk you through the steps to ensure Imagick is installed and properly configured for PHP 8.3.

Step 1: Install PHP 8.3 via Homebrew

First, let's ensure PHP 8.3 is installed and set as the default version.

  1. Install PHP 8.3:
   brew install php@8.3
Enter fullscreen mode Exit fullscreen mode
  1. Link PHP 8.3 to make it the default version on your system:
   brew link --overwrite --force php@8.3
Enter fullscreen mode Exit fullscreen mode
  1. Verify PHP 8.3 is active by checking the version:
   php -v
Enter fullscreen mode Exit fullscreen mode

You should see PHP 8.3.x as the output.

Step 2: Install pkg-config and ImageMagick

Before installing the Imagick PHP extension, we need to install pkg-config and ImageMagick:

  1. Install pkg-config and ImageMagick via Homebrew:
   brew install pkg-config imagemagick
Enter fullscreen mode Exit fullscreen mode

This step ensures that the necessary libraries and configurations for Imagick are available on your system.

Step 3: Install Imagick for PHP 8.3

Now that PHP 8.3 is set as the default version, we can install the Imagick extension.

  1. Use PECL to install Imagick for PHP 8.3. Since the default command may still point to PHP 8.0, we need to ensure the correct php-config for PHP 8.3 is used:
   /opt/homebrew/opt/php@8.3/bin/pecl install imagick
Enter fullscreen mode Exit fullscreen mode
  1. If PECL doesn’t work as expected, or you're manually installing, explicitly specify the correct php-config during the Imagick installation process:
   /private/tmp/pear/temp/imagick/configure --with-php-config=/opt/homebrew/opt/php@8.3/bin/php-config --with-imagick
Enter fullscreen mode Exit fullscreen mode

Step 4: Enable Imagick in PHP 8.3

Once Imagick is installed, it needs to be enabled in PHP’s configuration file (php.ini).

  1. Open the php.ini file for PHP 8.3:
   nano /opt/homebrew/etc/php/8.3/php.ini
Enter fullscreen mode Exit fullscreen mode
  1. Add the following line to enable the Imagick extension:
   extension=imagick.so
Enter fullscreen mode Exit fullscreen mode

Step 5: Restart PHP or Web Server

After enabling the Imagick extension, restart your web server or PHP service for the changes to take effect:

  • For Apache:
  sudo apachectl restart
Enter fullscreen mode Exit fullscreen mode
  • For PHP-FPM:
  sudo brew services restart php@8.3
Enter fullscreen mode Exit fullscreen mode

Step 6: Verify Imagick Installation

Finally, verify that the Imagick extension has been successfully installed and enabled. You can check using the following command:

php -m | grep imagick
Enter fullscreen mode Exit fullscreen mode

Alternatively, you can create a PHP script with phpinfo() to check if the Imagick extension is loaded.

<?php
phpinfo();
?>
Enter fullscreen mode Exit fullscreen mode

Conclusion

By following these steps, you can successfully install and enable the Imagick extension for PHP 8.3 on macOS. Ensuring the correct php-config is used is key to avoiding version conflicts and ensuring that Imagick works with PHP 8.3.

Feel free to comment if you encounter any issues or have questions regarding the setup!

Top comments (2)

Collapse
 
nasrulhazim profile image
Nasrul Hazim Bin Mohamad

If you are the user of RunCloud.io, you can install the extension as following:

apt-get install php83rc-pecl-imagick
systemctl reload php83rc-fpm
/RunCloud/Packages/php83rc/bin/php -i | grep imagemagick
Enter fullscreen mode Exit fullscreen mode

Replace the 83 with PHP version you want.

Reference: runcloud.io/blog/how-to-install-im...

Collapse
 
seagull profile image
Masaki NISHINO

Hello, I tried installing using the article as a reference.

PHP Startup: Unable to load dynamic library 'imagick.so' (tried: /opt/homebrew/lib/php/pecl/20230831/imagick.so (dlopen(/opt/homebrew/lib/php/pecl/20230831/imagick.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20230831/imagick.so' (code signature in &lt;C6DF86A8-D654-32F0-9F2B-0EDC8F56C409&gt; '/opt/homebrew/lib/php/pecl/20230831/imagick.so' not valid for use in process: mapping process is a platform binary, but mapped file is not), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20230831/imagick.so' (no such file), '/opt/homebrew/lib/php/pecl/20230831/imagick.so' (code signature in &lt;C6DF86A8-D654-32F0-9F2B-0EDC8F56C409&gt; '/opt/homebrew/lib/php/pecl/20230831/imagick.so' not valid for use in process: mapping process is a platform binary, but mapped file is not)), /opt/homebrew/lib/php/pecl/20230831/imagick.so.so (dlopen(/opt/homebrew/lib/php/pecl/20230831/imagick.so.so, 0x0009): tried: '/opt/homebrew/lib/php/pecl/20230831/imagick.so.so' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/opt/homebrew/lib/php/pecl/20230831/imagick.so.so' (no such file), '/opt/homebrew/lib/php/pecl/20230831/imagick.so.so' (no such file))) in Unknown on line 0
Enter fullscreen mode Exit fullscreen mode

Unable to load.