Using Imagick extension with PHP 8.3 on Lando

The latest imagick release in pecl repositories is not yet compatible with 8.3.

The workaround is to compile it manually by cloning the repo and running make commands inside the docker container.

Here's how to do it in lando:

.lando.yml

services:
  appserver:
    build_as_root:
      - /app/scripts/imagick.sh

scripts/imagick.sh

git clone https://github.com/Imagick/imagick.git --depth 1 /tmp/imagick && \
cd /tmp/imagick && \
git fetch origin master && \
git switch master && \
cd /tmp/imagick && \
phpize && \
./configure && \
make && \
make install && \
docker-php-ext-enable imagick && \
sed -i 's#<policy domain="coder" rights="none" pattern="PDF" />#<policy domain="coder" rights="read|write" pattern="PDF" />#g' /etc/ImageMagick-6/policy.xml

Set script execution bit: chmod u+x scripts/imagick.sh

lando rebuild

Articles