exec() & Image Magick Problem
Andi
- php
0 Mathias Brodala0 Andi
Hallo,
ich möchte mit dem Befehle
exec("convert '/home/kuh/image.jpg' '/home/kuh/image.gif'");
eine Bild mit PHP umwandeln lassen.
Ich erhalte jedoch kein Bild, Keine Fehlermeldung oder sonnst irgendwass. system() & passthru() gehen auch nicht.
Wenn ich den aufruf in der Konsole starte klappt alles.
Hab ich evtl. was vergessen bei der Installation?
Ich habe PHP 5.1.2 & die aktuelle Image Magick
Danke, Andi!
Hallo Andi.
ich möchte mit dem Befehle
exec("convert '/home/kuh/image.jpg' '/home/kuh/image.gif'");
eine Bild mit PHP umwandeln lassen.
Ich erhalte jedoch kein Bild, Keine Fehlermeldung oder sonnst irgendwass.
Also stehen error_reporting bereits auf E_ALL und ggf. display_errors in der php.ini auf on?
Einen schönen Montag noch.
Gruß, Mathias
Ja alles richtig eingestellt.
Wenn ich jetzt einen Falschen Pfad angeben wird ebenfalls nichts zurück gegeben. Es wäre wie wenn exec() nichts macht.
Grüße, Andi
Hallo Andi.
Wenn ich jetzt einen Falschen Pfad angeben wird ebenfalls nichts zurück gegeben. Es wäre wie wenn exec() nichts macht.
Hast du einmal versucht, etwas Anderes neben convert aufzurufen, wie z. B. ls, pwd oder whoami?
Einen schönen Montag noch.
Gruß, Mathias
echo $begrüßung;
exec("convert '/home/kuh/image.jpg' '/home/kuh/image.gif'");
Ich erhalte jedoch kein Bild, Keine Fehlermeldung oder sonnst irgendwass.
Also stehen error_reporting bereits auf E_ALL und ggf. display_errors in der php.ini auf on?
Das nützt ja noch nicht viel, denn das betrifft nur PHPs eigene Fehlermeldungen. Unter Unix ist es üblich, dass normale Ausgabe und Fehlermeldungen getrennte Wege gehen. In der Shell landen diese beiden Wege meist auf dem Bildschirm. Ansonsten muss man beide Wege getrennt abfragen, was aber bei exec() nicht vorgesehen ist. Man kommt nur an die letzte Zeile des normalen Ergebnisses (Rückgabewert von exec()) oder an die komplette normale Ausgabe (zweiten Parameter übergeben). Um an die Meldungen an den Fehlermeldungskanal zu gelangen kann man diesen in die normale Ausgabe umleiten. Dazu hängt man ein 2>&1 an die Befehlszeile.
echo "$verabschiedung $name";
Hallo dedlfix.
exec("convert '/home/kuh/image.jpg' '/home/kuh/image.gif'");
Ich erhalte jedoch kein Bild, Keine Fehlermeldung oder sonnst irgendwass.
Also stehen error_reporting bereits auf E_ALL und ggf. display_errors in der php.ini auf on?Das nützt ja noch nicht viel, denn das betrifft nur PHPs eigene Fehlermeldungen.
Ja, an dieser Stelle hatte ich auch noch einen PHP-Fehler vermutet.
Um an die Meldungen an den Fehlermeldungskanal zu gelangen kann man diesen in die normale Ausgabe umleiten. Dazu hängt man ein 2>&1 an die Befehlszeile.
Einen schönen Montag noch.
Gruß, Mathias
Hoi, auf einmal ist ales Weg hier im Forum?
Nachricht ist aber nooch angekommen.
Zum Problem:
Ja hab ich schon probiert. ls gibt mir schön meine Verzeichnisse aus.
Daher versteh ich auch nicht woran es liegen kann. Denn exec() geht, der Code in der Komandozeile auch. Aber eben über PHP nicht.
Grüße Andi
Hallo Andi.
Hoi, auf einmal ist ales Weg hier im Forum?
Wer weiß.
Nachricht ist aber nooch angekommen.
Dann ist ja gut.
Ja hab ich schon probiert. ls gibt mir schön meine Verzeichnisse aus.
Daher versteh ich auch nicht woran es liegen kann. Denn exec() geht, der Code in der Komandozeile auch. Aber eben über PHP nicht.
Hm, schwierig. Wird convert überhaupt definitiv gefunden? Befindet es sich im $PATH? Was sagt „which convert“, per exec() aufgerufen?
Einen schönen Montag noch.
Gruß, Mathias
Hallo Andi.
Daher versteh ich auch nicht woran es liegen kann. Denn exec() geht, der Code in der Komandozeile auch. Aber eben über PHP nicht.
Worüber ich eben beim Ausprobieren auch gestolpert bin: hat der Nutzer, unter welchem Apache läuft, Schreibrechte für das jeweilige Verzeichnis?
Nachdem ich dies sichergestellt hatte, wurde convert ausgeführt.
Einen schönen Montag noch.
Gruß, Mathias
Oh Mann ja das war das Problem. Falsche Dateirechte.
Danke für die Hilfe!
Hallo Andi.
Oh Mann ja das war das Problem. Falsche Dateirechte.
Damit dies in Zukunft nicht mehr passiert:
echo exec('convert logo.png logo.jpg');
→ Keine Ausgabe
echo exec('convert logo.png logo.jpg 2>&1');
→ Ausgabe: „convert: unable to open image `logo.jpg': Permission denied.“
Einen schönen Montag noch.
Gruß, Mathias