Imagick ist eine PHP -Erweiterung, um Bilder mithilfe der ImageMagick -Bibliothek zu erstellen und zu ändern. Es gibt auch eine Version von Imagick für HHVM. Obwohl die beiden Erweiterungen in ihrer API größtenteils kompatibel sind und beide die ImageMagick-Bibliothek nennen, sind die beiden Erweiterungen vollständig separate Code-Basen.
Fehler können auch unter https://bugs.php.net gemeldet werden, haben jedoch möglicherweise eine langsamere Reaktionszeit.
Die beste Möglichkeit, Imagick zu installieren, ist eine Packungsmanagerin, z.
Wenn Sie Imagick von Source kompilieren müssen, sollten Sie zuerst Imagemagick, mindestens Version 6.2.4, installieren, aber es wird dringend empfohlen, eine neuere Version aufgrund der vielen Fehlerbehebungen zu verwenden.
Sobald ImageMagick installiert ist, werden die folgenden Befehle im Imageick kompilieren und installieren:
git clone https://github.com/Imagick/imagick
cd imagick
phpize && ./configure
make
make install
Sie müssen auch Ihre PHP -INI -Datei extension=imagick.so hinzufügen, um die Erweiterung zu laden.
Für Windows installieren Sie bitte sowohl Imageick als auch die zugrunde liegende Imagemagick -Bibliothek aus:
Sobald im Zusammenhang mit derselben Version von Imagemagick erstellt wurde, wurde Imagning mit derselben Version ausgeführt, gegen die es zusammengestellt wurde. Es ist bekannt, dass es gegen eine andere Version von Imagemagick stabilisiert wird, und wird daher nicht empfohlen oder unterstützt.
Wenn Sie Imagick auf Nixos verwenden, möchten Sie wahrscheinlich fontconfig_file definieren, um eine Warnmeldung beim Laden von Schriftarten zu vermeiden, und Magick_Configure_Path, damit alle Informationen von Imagick :: GetConfigureOptions () verfügbar sind.
Fast alle Funktionen in der Bibliothek haben ein Beispiel unter www.phpimagick.com, in dem Sie den Beispielcode sehen können, um die Funktion aufzurufen, sowie das generierte Bild oder die Ausgabe.
Imagemagick, die Bibliothek, die die Imageick -Erweiterung dem PHP aussetzt, hat viele Fehlerbehebungen, die viele Probleme der Bildversorgung behoben haben. Wir empfehlen dringend , auf die neueste Version (größer als 6.9.1 oder 7.x) zu aktualisieren.
Die PHP -Erweiterung Imagick arbeitet die ImageMagick -Bibliothek. Obwohl die ImageMagick -Entwickler bei der Vermeidung von Fehlern gut vorsichtig sind, ist es unvermeidlich, dass einige Fehler im Code vorhanden sind. ImageMagick verwendet auch viele Bibliotheken von Drittanbietern, um Dateien zu öffnen, zu lesen und zu manipulieren. Die Autoren dieser Bibliotheken kümmern sich auch beim Schreiben ihres Codes. Allerdings macht jeder Fehler und es wird unweigerlich einige Fehler geben.
Da Imagemagick verwendet wird, um Bilder zu verarbeiten, ist es für Hacker möglich, Bilder zu erstellen, die ungültige Daten enthalten, um zu versuchen, diese Fehler auszunutzen. Aus diesem Grund empfehlen wir Folgendes:
Wenn Sie dies tun, wird es für Hacker schwieriger, einen Fehler auszunutzen, wenn man in den Bibliotheken, die ImageMagick verwendet, existieren sollte.
Führen Sie es als einen sehr geringen privilegierten Prozess aus. So viel wie möglich, die Dateien und Systemressourcen, die auf das PHP -Skript zugänglich sind, von dem Imagick aufgerufen wird, sollten gesperrt werden.
Stellen Sie sicher, dass alle Bilddateien mit den erwarteten "Magic -Bytes" beginnen, die den Bild -Dateitypen entsprechen, die Sie unterstützen, bevor Sie sie zur Verarbeitung an Imagemagick senden. Dies ist mit Finfo_File () - siehe unten.
Überprüfen Sie das Ergebnis der Bildverarbeitung ist eine gültige Bilddatei, bevor Sie sie dem Benutzer anzeigen. In dem äußerst unwahrscheinlichen Fall, dass ein Hacker in der Lage ist, beliebige Dateien in die Ausgabe von Imagick zu leiten, ist die Überprüfung, ob es sich um eine Bilddatei handelt und nicht der Quellcode Ihrer Anwendung, die gesendet wird, eine vernünftige Vorsichtsmaßnahme. Dies kann durch den folgenden Code erreicht werden:
<?php
$ finfo = finfo_open ( FILEINFO_MIME_TYPE );
$ mimeType = finfo_file ( $ finfo , $ filename );
$ allowedMimeTypes = [
' image/gif ' ,
' image/jpeg ' ,
' image/jpg ' ,
' image/png '
];
if ( in_array ( $ mimeType , $ allowedMimeTypes ) == false ) {
throw new SecurityException ( " Was going to send file ' $ filename ' to the user, but it is not an image file. " );
}Diese Empfehlungen garantieren keine Sicherheit, sondern sollten Ihre Bekanntheit von Imaglick-/Imagemagick -Sicherheitsproblemen einschränken.
Imagemagick kann die Open Multi-Processing-API verwenden, um mehrere Threads zu verwenden, um ein Bild gleichzeitig zu verarbeiten. Einige Implementierungen von OpenMP haben bekanntermaßen Stabilitätsprobleme, wenn sie in bestimmten Umgebungen verwendet werden.
Wir empfehlen, eine der folgenden zu machen:
Deaktivieren von OpenMP-Unterstützung in Imagemagick, indem Sie sie mit der Kompilierflagge "-disable-openmp" -Secompilien zusammenstellen.
Deaktivieren Sie die Verwendung von Threads in Imagemagick über Imagick, indem Sie: Imagick::setResourceLimit(Imagick::RESOURCETYPE_THREAD, 1); oder Imagick::setResourceLimit(6, 1); Wenn Ihre Version von Imagick nicht die Konstante ressourcetype_thread enthält.
Deaktivieren Sie die Verwendung von Threads in Imagemagick, indem Sie die Thread-Ressourcenlimit in der Bildemagick-Richtlinie des Threads mit <policy domain="resource" name="thread" value="1"/> Diese Datei festlegen.
Wenn Sie OpenMP in Imagemagick verwenden möchten, wenn es durch Imagick aufgerufen wird, sollten Sie gründlich testen, dass es sich auf Ihrem Server korrekt verhält.
Die Dokumentation braucht viel Arbeit. Hier gibt es einen Online -Editor: https://edit.php.net/ Beiträge sind mehr als willkommen.
Weitere Änderungen der zugrunde liegenden Imagemagick-Bibliothek finden Sie unter http://abi-laboratory.pro/tracker/timeline/imagemagick/.