ImageMagick und "myscrapbook"

Okay, ich bin kein php-ler, hoffe trotzdem, ich bekomme die richtigen Zeilen hin:

1. updatechapter.php

PHP:
 // fix the big image if it is too big
  if($maxwidth == ""){ $maxwidth = 300; }
   if (($width > $maxwidth) && ($Processor != "none")){
	 $high_res = $imagename . "_high" . $ext;
	 copy("$dirpath/$largeimage", "$dirpath/$high_res"); 
	 chmod("$dirpath/$high_res", 0777);	 
	 if ($Processor == "ImageMagick"){
	   system("$imagemagic -geometry $maxwidthx100 $dirpath/$largeimage  $dirpath/$largeimage");   
	   chmod("$dirpath/$largeimage", 0777); 
	 }

2. setup.php

PHP:
 //ImageMagick
if ( $Processor == "ImageMagick"){
  $tryone = file_exists("$pathtoproccess/utilities/convert");
  $fullpathtoit = "$pathtoproccess/utilities/convert";
  if (!$tryone){
	$tryone = file_exists("$pathtoproccess/convert");
	$fullpathtoit = "$pathtoproccess/convert";
	if(!$tryone){
	  $errors .= "<li>Can not locate ImageMagick convert program.. ";
	  $errors .= "The program is looking for it at the full path of <b>$pathtoproccess</b> or <b>$pathtoproccess/utilities/</b>";
	  $errors .= "Make sure that the path does not contain a ending slash.. If your server will let you you might ";
	  $errors .= "be able to run a locate to try to find the path. IF YOU DO NOT HAVE this program you can download it or try NetPBM ";
	} else {
	 $pathtoproccess = "$pathtoproccess/utilities/";
	}
  }
  // if no errors try thumbnailing the test image.
  if($errors == ""){
	system("$fullpathtoit -geometry 10000x75 test.jpg userimages/test.jpg");  
	chmod ("userimages/test.jpg", 0777);
	$info = stat("userimages/test.jpg");
	if(($info[7] == 0) || ($info[7] == "") ){
	  $errors .= "Error Running ImageMagick on test image.. could not thumbnail test.jpg to userimages... ";		   
			$errors .= "<font color=007700>How to fix this:</font><ul>";
	  $errors .= "<li>Make sure that the binaries are executable in <b>$pathtoproccess</b> they should all be chmod 755 to do this in ws_ftp right hand click on the files and select chmod";	  
	  $errors .= "<li>Make sure that <a href=test.jpg target=_blank>This image exists.</a> it is the test image for the installation.. ";
	  $errors .= "<li>Make sure that the binaries you downloaded are the correct compiled binaries. For example if you are running red hat linux and you downloaded the Freebsd file it is NOT going to work..";
	  $errors .= "<li>If all else fails try a different proccessor.. </ul>";	
	}
  }
}

3. bookcontents.php (dies wird das PopUp-Menü für die Bildgrösse sein)

PHP:
 <input type=FILE size=35 name=myfile ><br>
<? if ( ($Processor == "netpbm") || ($Processor == "ImageMagick") ){ ?>
re-size new image to: <select name=maxwidth><option>500</option><option>450</option><option>400</option><option>350</option><option SELECTED>300</option><option>250</option><option>200</option><option>150</option><option>100</option></select>width
<? } ?><br><br>
</td></tr>

4.) editpage.php

PHP:
   // fix the big image if it is too big
  if($maxwidth == ""){ $maxwidth = 300; }
   if (($width > $maxwidth) && ($Processor != "none")){
	 $high_res = $imagename . "_high" . $ext;
	 copy("$dirpath/$largeimage", "$dirpath/$high_res"); 
	 chmod("$dirpath/$high_res", 0777);	 
	 if ($Processor == "ImageMagick"){
	   system("$imagemagic -geometry $maxwidthx10000 $dirpath/$largeimage  $dirpath/$largeimage");   
	   chmod("$dirpath/$largeimage", 0777); 
	 }
	 if ($Processor == "netpbm"){
	  if ($ext == ".jpg"){			  
	  system("$imagemagic/pnmscale --quiet -width $maxwidth $dirpath/$imagename.pnm > $nextpath");
	  chmod("$nextpath", 0777);
	  system("$imagemagic/ppmtojpeg --quiet $nextpath > $dirpath/$largeimage");	  
	  chmod("$dirpath/$largeimage", 0777);
	  }

5. frontpage.php

PHP:
  // if we are changing proccessors..
  if( ($newProcessor != $Processor) || ($pathtoproccess != $imagemagic)){	
   
   if( $newProcessor  == "ImageMagick"){
	 $tryone = file_exists("$pathtoproccess/utilities/convert");
	 $fullpathtoit = "$pathtoproccess/utilities/convert";
	 if (!$tryone){
	   $tryone = file_exists("$pathtoproccess/convert");
	   $fullpathtoit = "$pathtoproccess/convert";
	   if(!$tryone){
		 $errors .= "<li>Can not locate ImageMagick convert program.. ";
		 $errors .= "The program is looking for it at the full path of <b>$pathtoproccess</b> or <b>$pathtoproccess/utilities/</b>";
		 $errors .= "Make sure that the path does not contain a ending slash.. If your server will let you you might ";
		 $errors .= "be able to run a locate to try to find the path. IF YOU DO NOT HAVE this program you can download it or try NetPBM ";
	   } else {
		$pathtoproccess = "$pathtoproccess/utilities/";
	   }
	  }
	// if no errors try thumbnailing the test image.

Das "Testbild" hat das Script bei der nstallation übrigens problemlos akzeptiert.

merci

tinu
 
Hm, fangen wir doch einfach mal damit an, dein Problem langsam einzugrenzen.
Fuehre mal folgendes Script aus, und poste mir den Output:
PHP:
$foo = exec("whereis convert");
echo $foo;

Wenn du eine Ausgabe erhaelst wie /usr/bin/convert oder dergleichen, muesste imagick korrekt installiert sein. Dann koennen wir den naechsten Schritt wagen, in dem du ein Bild (bild1.jpg) in ein Testverzeichnis legst, dem Testverzeichnis CHMOD777 gibst und folgendes Script hinzufuegst:
PHP:
exec("convert -rotate -90 bild1.jpg bild2.jpg");

Wenn im Testverzeichnis, ein um 90° gedrehtes bild2.jpg liegt, das aus bild1.jpg generiert wurde, arbeitet imagick weiterhin fehlerfrei und wir muessen dein Script wirklich auseinanderpfluecken, was ich nicht hoffe. ;-)

Cheers!
 
Mir scheint das ganze Script ein wenig seltsam zu sein.
Selbst die Demo auf der myscrapbook-Homepage funktioniert nicht richtig (wie schon erwähnt).
Die IM-Befehle scheinen mir nicht richtig zu sein (soweit ich mich an die IM Befehle erinnere). Ich frage mich wofür die 10000 in den convert aktionen stehen soll, wenn ein THUMBNAIL erstellt wird. Verkleinern kann man z. B. mit "convert -geometry 70x" wobei eine Seite auf 70 verkleinert wird und die andere Seite unter beachtung des 'aspect ratio' automatisch verkleinert (oder vergrößert).
Im Bildordner des kibuk habe ich auch nur die großen Bilder gefunden, es gibt keine Thumbnails.

Leider bekomme ich das Script auf meinem Entwicklungssystem nicht zum laufen (warum auch immer). Habe es bisher nur auf dem Webspace getestet. Aber es da zu bearbeiten ist eine Qual ohne ordentlichen debugger :(

Ich hoffe stanleyBs Vorschlag grenzt das ganze ein wenig ein :p
 
Zuletzt bearbeitet:
Hallo stanleyB und Neurodeamon!

Merci für die Mühe!

Zum Test 1: http://www.kibuk.ch/kibuk/test.php

Resultat: convert: /usr/bin/convert /usr/share/man/man1/convert.1.gz

Zum Test 2: http://www.kibuk.ch/test/test1.php

Der Code:

PHP:
<?php
exec("convert -rotate -90 test.jpg a7ec0294c7de.jpg");
?>

777 gesetzt

Resultat: Internal Server Error

Also doch die php.ini?
Hier ist das Problem, dass ich keinen Zugang zu der eigentlichen .ini habe, jedoch eine "eigene" erstellen kann, die scheinbar die "serverseitige" überschreibt (phpsuexec)
http://www.kibuk.ch/kibuk/info1.php

gruess

tinu
 
Jetzt wäre der Auszug aus dem Error-Log sehr hilfreich. Da steht drin was den Fehler verursacht hat. Die angezeigte Fehlermeldung selbst wird für alle internen Serverfehler angezeigt, deshalb braucht man den Error-Log :)
 
Da steht nur dies:

PHP:
 [23-Nov-2004 00:48:26] PHP Warning:  exec() has been disabled for security reasons in /home/kibukch/public_html/test1.php on line 2
[23-Nov-2004 01:15:13] PHP Warning:  exec() has been disabled for security reasons in /home/kibukch/public_html/test1.php on line 2
[23-Nov-2004 01:20:06] PHP Warning:  exec() has been disabled for security reasons in /home/kibukch/public_html/test1.php on line 2

Also ich gehe in der Annahme, es ist die "error_log" im "public_html-Verzeichnis", ansonsten finde ich nichts.

merci

tinu
 
Halt, stimmt nicht, da gibt's noch eine im "Kibuk-Ordner". Mit 131 Einträgen! Die letzten poste ich einmal:

PHP:
 [21-Nov-2004 12:05:13] PHP Parse error:  parse error, unexpected '.' in /home/kibukch/public_html/kibuk/header.php on line 40
[21-Nov-2004 12:05:13] PHP Parse error:  parse error, unexpected '.' in /home/kibukch/public_html/kibuk/header.php on line 40
[21-Nov-2004 12:06:41] PHP Parse error:  parse error, unexpected '.' in /home/kibukch/public_html/kibuk/header.php on line 40
[21-Nov-2004 12:06:41] PHP Parse error:  parse error, unexpected '.' in /home/kibukch/public_html/kibuk/header.php on line 40
[21-Nov-2004 12:08:09] PHP Parse error:  parse error, unexpected '.' in /home/kibukch/public_html/kibuk/header.php on line 38
[21-Nov-2004 12:08:09] PHP Parse error:  parse error, unexpected '.' in /home/kibukch/public_html/kibuk/header.php on line 38
[21-Nov-2004 12:34:42] PHP Warning:  system() has been disabled for security reasons in /home/kibukch/public_html/kibuk/frontpage.php on line 155
[21-Nov-2004 23:36:22] PHP Parse error:  parse error, unexpected '}' in /home/kibukch/public_html/kibuk/bookcontents.php on line 445
[21-Nov-2004 23:37:59] PHP Parse error:  parse error, unexpected '}' in /home/kibukch/public_html/kibuk/bookcontents.php on line 440
[21-Nov-2004 23:38:00] PHP Parse error:  parse error, unexpected '}' in /home/kibukch/public_html/kibuk/bookcontents.php on line 440
[21-Nov-2004 23:38:02] PHP Parse error:  parse error, unexpected '}' in /home/kibukch/public_html/kibuk/bookcontents.php on line 440
[21-Nov-2004 23:38:02] PHP Parse error:  parse error, unexpected '}' in /home/kibukch/public_html/kibuk/bookcontents.php on line 440
[21-Nov-2004 23:44:06] PHP Parse error:  parse error, unexpected T_STRING in /home/kibukch/public_html/kibuk/bookcontents.php on line 224
[21-Nov-2004 23:44:06] PHP Parse error:  parse error, unexpected T_STRING in /home/kibukch/public_html/kibuk/bookcontents.php on line 224
[21-Nov-2004 23:44:50] PHP Parse error:  parse error, unexpected T_STRING in /home/kibukch/public_html/kibuk/bookcontents.php on line 224
[21-Nov-2004 23:44:51] PHP Parse error:  parse error, unexpected T_STRING in /home/kibukch/public_html/kibuk/bookcontents.php on line 224
[22-Nov-2004 00:17:21] PHP Warning:  system() has been disabled for security reasons in /home/kibukch/public_html/kibuk/updatechapter.php on line 169

gruess

tinu
 
Nur der erste Eintrag ist nötig, den zweiten Post kannst Du bei Gelegenheit löschen :)

Es scheint als wäre in der PHP.INI die Funktion EXEC aus Sicherheitsgründen deaktiviert worden.

Wenn Du Glück hast hilft es alle exec() funktionen durch system() oder passthru() zu ersetzen. Wenn auch diese gesperrt wurden MUSS das Script auf GD umgeschrieben werden, da dieses über eigenen Funktionen (per Modul) in PHP eingebunden ist :)
 
Ich werde den 2. Post bei Gelegenheit löschen ;)

Hier "meine" .ini, wie sie jetzt auf dem Server:

PHP:
 disable_functions = ""
safe_mode = Off
safe_mode_gid = 0
safe_mode_include_dir =
safe_mode_exec_dir =
open_basedir =
safe_mode_allowed_env_vars = PHP_
safe_mode_protected_env_vars = LD_LIBRARY_PATH

Das Script umschreiben hat wenig Sinn, wird zuviel Aufwand, denke ich. Und die KiBuK-Site wird auch nicht gerade ein Renner sein. Ich habe lange ein "Buch-Script" gesucht und nichts anderes gefunden.
Notfalls geht's auch so, dass wir die Bilder (unsere, etwa im Photoalbum) vor dem Upload bearbeiten und im Gästebuch die Bilderupload-Funktion einfach ausklammern.
Das Script ist halt schon ideal für ein Kinderbuchfestival!

Merci für Deine Bemühungen!

tinu
 
Der Aufwand ist nicht unbedingt groß. Probiere mal stanleyBs Beispiel mit meinen vorgeschlagenen Funktionen aus. Wenn auch da die Fehlerseite kommt kannst Du ImageMagick vergessen (ich frage mich wozu das überhaupt auf dem System ist, wenn man es sowieso nicht aufrufen darf ;) ).
Wenn einer der Befehle funktioniert, dann kann man mit einem guten Texteditor alle Strings "exec(" mit "andererbefehl(" ersetzen lassen. Das kostet Dich nur ein paar klicks und das script sollte dann (eigentlich) laufen.
Ansonsten wirst Du halt wirklich die Uploadmöglichkeit ausklammern müssen ;)

Der Server scheint bei Deiner PHP.INI bestimmte Einstellungen zu ignorieren, denn in Deinen Zeilen wird keine Funktion deaktiviert. ;-]
 
Zurück