PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP / Imagemagick und Shell :-)



Philipp7
11-04-2006, 14:48
Hallo zusammen,

ich bin mit meinen Kenntnissen am Ende. Daher wende ich mich an Euch ;)

Folgendes Problem tritt auf:
Ich versuche via Imagemagick von diversen Bildern Thumbnails zu generieren.
Dies geschieht mit dem Aufruf in PHP (mittels exec oder system):

/usr/bin/convert -size 458x500 '/www/images/product_images/original_images/5_0.jpg' -geometry 458x500 +profile "*" '/www/images/product_images/popup_images/5_0.jpg'


Als Ergebnis erhalte ich: "convert: Unable to open file ('/www/images/product_images/original_images/5_0.jpg')
Dieses File existiert aber einwandfrei an der angegebenen Stelle...

Gebe ich EXAKT diese Zeile auf der Shell als wwwrun bzw-. apache User ein, klappt es einwandfrei und der Thumbnail wird erzeugt. Ebenso mit dem root-user.

Warum kann also das ganze nicht über ein exec(...) von PHP aus ausgeführt werden.

chmod und chgrp sind in Ordnung, alle Dateien und betroffene Verzeichnisse haben vorsichtshalber mal 777 und owner wwwrun bekommen, PHP ist nicht im Safe_mode und open_base_dir ist nicht eingestellt...

Das gleiche Problem erhalte ich auch unter zu Hilfenahme von sudo, selbst wenn ich im sudoers folgenden Eintrag habe: "wwwrun ALL = (ALL) ALL"

Latein am Ende ;)
Viele Grüße
P7

undefined
11-04-2006, 20:35
Zum Xten male in diesem Forum ihr müsst escapen


function _imresize($in, $pro, $newName) {

if(($this->bildinfo($in, $this->EXIFDATA) != false) && is_array($this->PICINFO)) {

if(!empty($pro)) {

$new = $this->_setdimens($pro);

} else {

$this->fehler("Bitte die Pixel angeben wie viel das Bild verkleinert werden soll z.B. 50px!", __LINE__, __FUNCTION__);
return false;

}

$command = $this->IMAGICK . " -size " . $this->PICINFO['width'] . "x" . $this->PICINFO['height'] . " ";
$command .= "" . $this->PFAD.$this->PICINFO['filename'] . $in . " -resize " . $new['width'] . "x" . $new['height'] . " ";
$command .= "+profile \"*\" " . $this->PFAD . $newName;

system(escapeshellcmd($command));

return "Das Bild wurde neu erstellt, siehe Bild Info.";

}
}

Philipp7
18-04-2006, 16:57
;-) Danke.

escapeshellcmd hatte ich verwendet - funktioniert hat es erst dann, als ich die "" aus dem Command genommen hatte.

Romanday
18-04-2006, 19:13
;-) Danke.

escapeshellcmd hatte ich verwendet - funktioniert hat es erst dann, als ich die "" aus dem Command genommen hatte.

Und jetzt noch überlegen wo kommen die "", wer braucht die und warum.:D