Zur Navigation

ImageMagick Version über htaccess ändern?

1 Horst_Braun

Hallo,

ich habe bei mir eine Script laufen, welches ImageMagick voraussetzt. Das geht teilweise ganz, aber es spinnt immer wieder. Mein Hoster hat mir gesagt, dass ich eine andere ImageMagick Version probieren kann. Diese wären hier installiert.:

ImageMagick Defaultversion
Pfad: /usr/bin/

ImageMagick V4.2.9
Pfad: /usr/bin/ImageMagick_4.2.9/

ImageMagick V6.2.6
Pfad: /usr/bin/ImageMagick_6.2.6/bin/

ImageMagick V6.7.1
Pfad: /usr/bin/ImageMagick_6.7.1/

Kann ich das über die htaccess ändern? Oder wo tue ich das?

Vielen Dank.

MfG

10.03.2015 20:09

2 Jörg

Was ist das für eine Script - ein Shell-Script, oder PHP oder ...?

und wie wird ImageMagick in diesem Script aufgerufen?

10.03.2015 20:48 | geändert: 10.03.2015 20:49

3 Horst_Braun

Hmmm. Naja. Da kommt alles drin vor. Das ist eine Art T-Shirt Designer. Den hab ich umgebaut für Servietten:
http://www.servietten-deko.de/servietten-bedrucken.php

Das ganze läuft mit CakePHP. Ich weiß selbst leider nicht wie ImageMagick aufgerufen wird. Nach was könnte ich da in den Dateien suchen?

MfG

10.03.2015 21:50

4 Jörg

Es gibt da wohl zwei Möglichkeiten:

1. die betreffende PHP-Erweiterung wird verwendet. Dann sollte sich so etwas im Code finden:

$image = new Imagick('image.jpg');

Hierzu würde ich nach dem String 'new Imagick' suchen

oder 2. die ImageMagick-Tools convert oder mogrify werden direkt über exec() oder system() aufgerufen

Dazu würde ich nach den Strings 'convert' oder 'mogrify' suchen

(es gibt noch weitere Tools, aber das sind zwei die mir geläufig sind)

10.03.2015 22:22 | geändert: 10.03.2015 22:27

5 Horst_Braun

Beide Ausdrücke finde ich. Den ersten Ausdruck nur einmal.

Convert gibt es sehr sehr häufig.

10.03.2015 22:32

6 Jörg

Beide Ausdrücke finde ich. Den ersten Ausdruck nur einmal.

Du meinst 'new Imagick'? in dem Fall wird wohl die Imagick-Erweiterung verwendet.

Ob die Imagick-Erweiterung aktiviert ist, kannst du dir auch über eine phpinfo Seite anzeigen lassen:

<?php phpinfo(INFO_MODULES); ?>

Convert gibt es sehr sehr häufig.

Innerhalb von exec() oder system()?

Wenn die PHP-Extension verwendet wird, gibt es wohl keine Pfade in dem Script, die man anpassen könnte. Wie man der Extension beibringt, die API eines anderen ImageMagick-Binaries zu nutzen, wüsste ich jetzt auch nicht. Ggf. müsste die Extension mit den Header-Dateien der anderen ImageMagick-Version neu kompiliert werden.

Läuft das Script auf einem Root- oder V-Server oder auf einem gewöhnlichen Webspace?

10.03.2015 23:58

7 Horst_Braun

Innerhalb von system().

Das Ganze läuft auf all-inkl.de auf einem gewöhnlichen Webspace.

Die Leute haben mir gesagt, dass ich meinen System sagen muss, welche Version eingesetzt wird.

11.03.2015 00:13

8 Jörg

Innerhalb von system().

Wie wird convert darin aufgerufen, mit vollem Pfad (/usr/bin/convert) oder einfach nur als 'convert'?

Die Leute haben mir gesagt, dass ich meinen System sagen muss, welche Version eingesetzt wird.

Was meinen die denn mit "System"?

Vielleicht kann man im Dashboard von all-inkl.de irgendwas umstellen - da würde ich ggf. nochmal nachfragen.

Bei einem Shell-Script könnte man die PATH-Variable erweitern:

PATH=/usr/bin/ImageMagick_6.7.1/:$PATH

Dann wird z.B. das Programm convert als erstes in /usr/bin/ImageMagick_6.7.1/ gesucht

Vielleicht funktioniert dies in PHP auch mittels system() (ganz am Anfang des Scripts):

system('PATH=/usr/bin/ImageMagick_6.7.1/:$PATH');

Voraussetzung wäre, dass die ImageMagick-Tools (convert, mogrify, etc.) nicht mit dem vollen Pfad aufgerufen werden. Andernfalls müsste man die Pfade einzeln korrigieren.

Und falls die Imagick-Extension verwendet wird (siehe meine erste Frage in Beitrag 6), kann man keine Pfade umbiegen.

11.03.2015 08:49

9 Horst_Braun

Mit "System" meinen die, dass die da nichts umstellen können. Das muss in meinen Dateien passieren.

Ich hab es mit:
system('PATH=/usr/bin/ImageMagick_6.7.1/:$PATH');
probiert, aber es hat sich nichts geändert.

11.03.2015 09:42

10 Jörg

Ich habe gerade mal getestet. Die PATH-Erweiterung funktioniert zwar, aber nur innerhalb eines system() Aufrufs. Beim nächsten Aufruf von system() ist PATH wieder zurückgesetzt. Man kommt dann wohl nicht drum rum, jeden einzelnen Aufruf von convert, mogrify etc. anzupassen.

Zwei Fragen sind noch offen:

Beide Ausdrücke finde ich. Den ersten Ausdruck nur einmal.

Du meinst 'new Imagick'? in dem Fall wird wohl die Imagick-Erweiterung verwendet.

Es kann natürlich auch sein, dass das Script prüft, ob die Erweiterung vorhanden ist, und andernfalls die ImageMagick-Tools direkt aufruft. Kann man das Script irgendwo einsehen (falls es die Lizenz zulässt)?

Innerhalb von system().

Wie wird convert darin aufgerufen, mit vollem Pfad (/usr/bin/convert) oder einfach nur als 'convert'?

Am besten du postest mal einen entsprechenden Code-Abschnitt

11.03.2015 11:59