
Das EGOCMS unterstützt, neben WebP, auch die automatische Umwandlung in die modernen Bildformate Avif und JPEG XL. Für die Bildumwandlung verwendet das EGOCMS das PHP Modul Imagick und dieses das Tool ImageMagick. Die aktuell verfügbare PHP Imagick Version wird allerdings nur mit der ImageMagick Version 6 ausgeliefert.
Die ImageMagick Version 7 bietet allerdings die Unterstützung für die Umwandlung in JPEG XL an. Außerdem werden mit dieser Version auch Fehler gelöst, wie z.B. bei der Anzeige von Transparenzen in Avif Bildern. Insgesamt ist auch die Bildumwandlung in die Bildeformate Avif und JPEG XL so schnell, dass dafür keine externen Tools mehr verwendet werden müssen.
cd /cd /tmptmpEGOTEC liefert im EGOCMS Image ein selbst-kompiliertes PHP Imagick Modul mit der ImageMagick Version 7 aus. Falls Sie das EGOCMS Image nicht verwenden und auch die Vorteile von ImageMagick 7 im EGOCMS nutzen möchten, können Sie PHP Imagick selbst kompilieren. Bitte beachten Sie dabei, PHP Imagick mit der PHP Version zu kompilieren, die Sie aktuell einsetzen.
Im Gitlab EGOCMS Projekt finden Sie ein Bash Skript, welches alle Schritte enthält um ein PHP Imagick Modul mit ImageMagick 7 zu kompilieren. Das Skript wurde für den Einsatz unter Ubuntu 22.04 und 24.04 entwickelt. Sollten Sie ein anderes Betriebssystem einsetzen, sind evtl. weitere/andere Schritte notwendig:
https://gitlab.com/egotec/egocms/-/blob/develop/docker/ubuntu/copy/imagick-7.sh
Das Bash Skript wird für die Kompilierung von PHP Imagick für alle vom EGOCMS unterstützten PHP Versionen für das EGOCMS Image genutzt. Das Bash Skript sollte vor dem Einsatz für Ihre eingesetzte PHP Version angepasst werden. Einige Zeilen sind auskommentiert, da diese optional sind. Sie können die einzelnen Schritte im Bash Skript auch manuell ausführen und ggf. für Ihre Bedürfnisse anpassen/erweitern.
Im Folgenden wird am Beispiel des Bash Skripts beschrieben, wie prinzipiell die einzelnen Schritte für die Kompilierung von PHP Imagick mit ImageMagick 7 aussehen. Das Verständnis über den Vorgang hilft dabei, den Prozess für andere Betriebssysteme zu übertragen.
Wechsel in ein temporäres Verzeichnis
Während des Prozesses wird ImageMagick aus dem offiziellen Github heruntergeladen. Dies sollte in einem temporären Verzeichnis passieren, so dass das Aufräumen am Ende des Prozesses leichter fällt, bzw. automatisch passieren kann.
cd /tmp
Serverumgebung vorbereiten
Für den JPEG XL Support wird das Paket libjxl-dev benötigt. Falls Sie Ubuntu 22.04 einsetzen, müssen Sie das zugehörige Repository hinzufügen. Ab Ubuntu 24.04 ist das nicht notwendig, da es im Standard Repository universe enthalten ist.
add-apt-repository ppa:savoury1/graphics
Der Prozess benötigt die Pakete git und libmagickwand-dev.
apt update
apt install git libmagickwand-dev -y
Da der Prozess auf make setzt, sind eventuell auch folgende Pakete notwendig: software-properties-common und build-essential.
ImageMagick herunterladen
Falls ImageMagick bereits installiert ist, sollte es vorher deinstalliert werden, um Konflikte während der Installation von ImageMagick 7 zu verhindern. ImageMagick 7 wird nun heruntergeladen.
apt remove imagemagick -y
git clone https://github.com/ImageMagick/ImageMagick.git ImageMagick-7.1.2
cd ImageMagick-7.1.2/
Die Deinstallation einer vorinstallierten ImageMagick Version wird auch dann empfohlen, wenn diese bereits ImageMagick 7 ist. Während der Kompilierung werden Formate (Delegates) für ImageMagick bereitgestellt, die ggf. im Standard nicht vorhanden sind.
Formate installieren
Stellen Sie sicher, dass ImageMagick mit der Unterstützung für WebP, Avif, JPEX XL, aber auch PNG, TIFF kompiliert werden kann. Es werden noch weitere Formate bereitgestellt, um mindestens alle Formate zu unterstützen, die der ImageMagick Standard auch unterstützt.
# install mandatory EGOCMS formats
apt install libheif-dev -y && \
apt install libavif-dev -y && \
apt install libjpeg-dev -y && \
apt install libpng-dev -y && \
apt install libtiff-dev -y && \
apt install libwebp-dev -y && \
apt install libjxl-dev -y
# install missing default formats (DFONT, DJVU, DOT, EXR, GV, J2C, J2K, JP2, JPC, JPM, OTF, TTF, WMF, WMZ, X, XWD)
apt install libopenjp2-7-dev -y && \
apt install libdjvulibre-dev -y && \
apt install libopenexr-dev -y && \
apt install graphviz-dev -y && \
apt install libwmf-dev -y && \
apt install libfreetype6-dev -y && \
apt install libfontconfig1-dev -y && \
apt install ffmpeg -y && \
apt install libx11-dev -y && \
apt install libxext-dev -y
ImageMagick installieren
Sind die Vorbereitungen für die ImageMagick Installation abgeschlossen, kann diese nun durchgeführt werden.
./configure --with-modules --with-wmf=yes --with-gslib=yes
make
make install
ldconfig /usr/local/lib/
Ob die Installation funktioniert hat, kann z.B. mit magick --version geprüft werden. Hier sollte die korrekte Versionsnummer und die unterstützten Formate (Delegates) angezeigt werden.
Es wird empfohlen die ImageMagick policy.xml zu erweitern, so dass ImageMagick nur maximal 2 GB des verfügbaren Arbeitsspeichers verbrauchen darf.
sed -i 's/<!-- <policy domain="resource" name="disk" value="1GiB"\/> -->/<policy domain="resource" name="disk" value="2GiB"\/>/' /usr/local/etc/ImageMagick-7/policy.xml
PHP Imagick kompilieren
Wenn ImageMagick 7 installiert ist, kann nun das PHP Imagick Modul auf dieser Basis kompiliert werden. Dazu muss dieses zunächst aus Github heruntergeladen werden.
git clone https://github.com/Imagick/imagick
PHP Imagick muss für jede verfügbare PHP Version auf dem Server installiert werden. In diesem Beispiel wird nur für PHP 8.5 kompiliert. Dafür wird das phpize Tool benötigt.
apt install php8.5-dev
Es wird in das heruntergeladene imagick Verzeichnis gewechselt.
cd imagick/
Die Versionsnummer des kompilierten PHP Moduls ist standardmäßig nur der Platzhalter @PACKAGE_VERSION@ und kann mit z.B. folgendem Befehl überschrieben werden.
sed -i "s#@PACKAGE_VERSION@#EGOCMS self-compiled for PHP 8.5#g" php_imagick.h
Das PHP Imagick Modul kann nun kompiliert werden.
phpize8.5 && ./configure
make
make install
Optional können Sie anschließend das kompilierte PHP Imagick Modul mit make test testen.
PHP Imagick aktivieren
Das neue PHP Imagick Modul muss nun für PHP aktiviert werden. Durch die Kompilierung wurde automatisch eine imagick.so Datei angelegt.
echo "extension=imagick.so" | tee "/etc/php/8.5/mods-available/imagick.ini"
phpenmod -v 8.5 imagick
Abschließend muss nur noch der PHP Prozess neu gestartet werden.
service php8.5-fpm restart
Ob das PHP Imagick Modul korrekt kompiliert wurde und verfügbar ist, können Sie z.B. über die phpinfo() Funktion oder den Menüpunkt Hilfe > Info > PHP-Info im EGOCMS Adminbereich überprüfen.
EGOTEC unterstützt Sie gerne bei der Kompilierung und Einrichtung des PHP Imagick Moduls. Wenden Sie sich dazu an den EGOCMS Support.