Auf meinem heimischen Webserver will ich automatisch generierte svg-Dateien in png-Dateien umwandeln. Ein einfacher Job für ImageMagick. Jetzt muss man nur noch PHP dazu bringen, die Imagick-Klasse zu verwenden...
Für diejenigen, die ImageMagick noch nicht installiert haben – dies und GhostScript entweder per homebrew oder MacPorts installieren.
sudo port install ImageMagick --with-ghostscript
Nun zum PHP-Modul. Dies ist auch mit einem Befehl installiert:
sudo pecl install imagick
Das Imagemagick-Prefix konnte bei mir nicht automatisch gefunden werden. Bei einer Installation von ImageMagick über MacPorts sollte somit auf die Nachfrage
Please provide the prefix of Imagemagick installation [autodetect]das Verzeichnis
/opt/local/eingegeben und mit Enter bestätigt werden.
Sollte alles geklappt haben, sehen wir unter anderem das Verzeichnis, in welchem das Modul imagick.so installiert wurde, welches PHP benötigt.
Installing '/usr/include/php/ext/imagick/php_imagick.h'
Installing '/usr/include/php/ext/imagick/php_imagick_defs.h'
Installing '/usr/include/php/ext/imagick/php_imagick_shared.h'
Installing '/usr/lib/php/extensions/no-debug-non-zts-20090626/imagick.so'
Nun flogen meine Samstag-Regenwettertag-Stunden dahin. Eigentlich sollte das Modul in der php.ini eingetragen werden. Ich als Unix-Amateur war allerdings der Ansicht, dass ich soetwas nicht habe und Module nur in der httpd.conf aktivieren kann (wo ebenfalls auch ziemlich viele .so-Module geladen werden).
Allerdings lag' ich so ziemlich daneben und recherchierte dank der Fehlermeldungen, die Apache mir um die Ohren warf, in viele falsche Richtungen. Es hätte doch so einfach sein können und ich hätte nur gleich nach der php.ini suchen müssen...
Jedenfalls:
Die FehlermeldungenCannot load /usr/libexec/apache2/imagick.so into server:
dlopen(/usr/libexec/apache2/imagick.so, 10): no suitable image found.
Did find:\n\t/usr/libexec/apache2/imagick.so: stat() failed with errno=62
Can't locate API module structure `imagick' in file /usr/libexec/apache2/imagick.so:
dlsym(0x206620, imagick): symbol not found
Haben nichts damit zu tun, dass das Modul in einem falschen Verzeichnis liegt, 64bit statt 32bit ist (oder anders herum), nicht zur installierten PHP-Version passt oder ich alles nochmals manuell kompilieren muss.
Diese Fehlermeldungen hingen in meinem Fall eher damit zusammen, dass ich versucht hatte, das Modul über die httpd.conf zu laden. Fehler!
Auch wenn ich bisher alle Apache-Konfugurationen httpd.conf getätigt hatte, werden die PHP-Eigenschaften halt doch in php.ini festgelegt.
Entschuldigung, dass ich das schreiben muss, aber: Ich Depp!
Diese existierte bei mir noch nicht und musste erst als Kopie aus der php.ini.default heraus erstellt werden
Dann die php.ini wie in allen Anleitungen steht öffnen und um die Zeile
erweitern.
(PHP suchte sogar ohne Widerrede im korrekten Verzeichnis
/usr/lib/php/extensions/no-debug-non-zts-20090626, wo
pecldas Modul installiert hatte).
Stimmt die Nummer 20090626 des extension-Pfades allerdings nicht mit der PHP-API-Version überein, die bei
ausgegeben wird, so stimmt hier aber tatsächlich etwas nicht).
Apache neustarten (Systemeinstellungen > Freigaben; Webfreigabe beenden und neu starten) und gut ist.
Am Rande: Abgesehen von meinem besserwisserischen Schritt in die falsche Richtung, die PHP-Erweiterung in der Apache-Konfiguration einzutragen eine flotte und problemlose Geschichte.Habe schon mehrmals versucht, das ganze auf einem Windows-System zu wiederholen...erfolglos. Auch mit gutgemeinten Ratschlägen von hier und hier. Aber Windows ist einfach nix für Servereinsätze. Schade, dass es dazu immer wieder vergewaltigt wird.
![]() ![]() ![]() ![]() |
|
Erstellt am: 27.12.2014 unter den Kategorien Online . | Kommentieren |