Php fehlermeldungen unterdrüchen und eine eigene seite anzeigen lassen

harderph

Erfahrenes Mitglied
Morgen!
ich hätt da mal ein frage:
Wenn ich jetzt ein foto uploade und die grösse (MB) überschritten ist dann zeigt mir xampp immer
Code:
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 12160 bytes) in D:\xampp.......
! Nach endlichen stunden mit googlen und hast du nihct gesehen experimenten stelle ich die frage ob jemand ein script kennt das die grösse der fotos im MB oder KB erkennt und auch fehler ausgiebt (bei einen bestimmten wert)
oder
kann man die fehlermeldung selber gestallten durch ein script (der dann sagt das es zu gross ist)
 
set_error_handler
Damit kannst du die Ausgabe aller Fehler steuern. Allerdings bin ich mir bei Fatal Error's da nicht so sicher. Ich glaube die können mit einem eigenen Error Handler nicht gesteuert werden, weil die Skript Ausführung abgebrochen wird.
 
Hmm, ich glaube, man kann schon im HTML-Quelltext was festlegen, dass nur Daten von einem bestimmten Typ oder einer bestimmten Größe genommen werden. Notfalls vielleicht mit JavaScript abchecken, YouTube macht das irgendwie (wenn man Videos größer als 100MB hochladen will, kommt sofort ein Fehler, aber die benutzen auch einen Flash-Loader).
 
Naja laut der fehler meldung ist die datei zu gross!
ich möchte eben die fehlermeldung nihct angeziegt haben die oben steht sondern meine eigene fehler seite anzeigen lassen !
Ich möchte auch nicht das der Wehboster KB erhöht! das script habe ich hier aus dem forum!
Das script wurde ein bischen geändert (UPDATE ind DB) damit gibt es keine probleme!
Nur wenn die datei zu gross ist (KB und nicht height & widht)
Wenn hier euch das anschaun möchtet:
PHP:
$bild_id=time();
$bild_name=$bild_id.".jpg";
$useruid = $_SESSION["user_id"];                       
if(copy($_FILES["reg_foto"]["tmp_name"], "usergallerie/".$bild_name)) {
$dir="usergallerie/";
			$filename=$bild_name;
			$filename2=$bild_name;

// Größe des Bildes auslesen

$size = getimagesize("$dir$filename");
$width = $size[0];
$height = $size[1];

// Breite des Thumbnails festlegen (Höhe wird automatisch angepasst)
$width_tn = 350;
$height_tn = intval($height * $width_tn / $width);

// Bei GD < 2.0.1: ImageCreateTrueColor -> ImageCreate, ImageCopyResampled -> ImageCopyResized

$picture = ImageCreateFromJPEG("$dir$filename");
$picture_tn = ImageCreateTrueColor($width_tn,$height_tn);
ImageCopyResampled($picture_tn,$picture,0,0,0,0,$width_tn,$height_tn,$width,$height);

// Endung "_tn" bei Dateiname hinzufügen, vor ".jgp"

$filename = explode (".", $filename);
$tn = "_big.";

// Thumbnail in $dir mit angepasstem $filename speichern, JPG Qualität: 95

ImageJPEG($picture_tn,"$dir$filename[0]$tn$filename[1]",95);

// Temporären Speicher auf Server wieder frei geben

ImageDestroy($picture);
ImageDestroy($picture_tn);
$sql = "UPDATE user_account SET  avantar='$filename[0]$tn$filename[1]' WHERE uid='$useruid'";
  mysql_query($sql) OR die(mysql_error());
  echo '';
// Breite des Thumbnails festlegen (Höhe wird automatisch angepasst)

$width_tn = 84;
$height_tn = intval($height * $width_tn / $width);

// Bei GD < 2.0.1: ImageCreateTrueColor -> ImageCreate, ImageCopyResampled -> ImageCopyResized

$picture = ImageCreateFromJPEG("$dir$filename2");
$picture_tn = ImageCreateTrueColor($width_tn,$height_tn);
ImageCopyResampled($picture_tn,$picture,0,0,0,0,$width_tn,$height_tn,$width,$height);

// Endung "_tn" bei Dateiname hinzufügen, vor ".jgp"

$filename2 = explode (".", $filename2);
$tn = "_tn.";

// Thumbnail in $dir mit angepasstem $filename speichern, JPG Qualität: 95

ImageJPEG($picture_tn,"$dir$filename2[0]$tn$filename2[1]",95);

// Temporären Speicher auf Server wieder frei geben

ImageDestroy($picture);
ImageDestroy($picture_tn); 

$thumb_bild = "$filename2[0]$tn$filename2[1]";
$sql = "UPDATE user_account SET avantar_th='$filename2[0]$tn$filename2[1]' WHERE uid='$useruid'";
  mysql_query($sql) OR die(mysql_error());
  echo 'Dein Avantar wurde erstellt und gespeichert';
  

  
                            
// Nachdem Thumbnails erstellt wurden, das Original Bild löschen
unlink("usergallerie/".$bild_name);
 
}
 
Laut der Fehlermeldung beansprucht das Skript zu viel Arbeitsspeicher. Das liegt bei Skripten, die Grafiken verarbeiten, häufig daran, dass nicht mehr benötigter Speicher (etwa temporär erstellte Grafiken) nicht wieder freigegeben wird.

Probier mal Folgendes:
PHP:
$useruid = $_SESSION["user_id"];
$dstPath = "usergallerie/".time().".jpg";
if( move_uploaded_file($_FILES["reg_foto"]["tmp_name"], $dstPath) && ($dstPath = realpath($dstPath)) ) {
	// Größe des Bildes auslesen
	$size = getimagesize($dstPath);
	$width = $size[0];
	$height = $size[1];

	// Breite des Thumbnails festlegen (Höhe wird automatisch angepasst)
	$width_tn = 350;
	$height_tn = intval($height * $width_tn / $width);

	// Bei GD < 2.0.1: ImageCreateTrueColor -> ImageCreate, ImageCopyResampled -> ImageCopyResized
	$original = ImageCreateFromJPEG($dstPath);
	$picture = ImageCreateTrueColor($width_tn, $height_tn);
	ImageCopyResampled($picture, $original, 0, 0, 0, 0, $width_tn, $height_tn, $width, $height);
	ImageDestroy($original);

	// Endung "_big" bei Dateiname hinzufügen, vor ".jgp"
	$dstPath = dirname($dstPath).str_replace('.', '_big.', basename($dstPath));

	// Thumbnail in $dstPath speichern, JPG Qualität: 95
	ImageJPEG($picture, $dstPath, 95);

	$sql = "UPDATE user_account SET  avantar='".substr($dstPath, count($_SERVER['DOCUMENT_ROOT']))."' WHERE uid='$useruid'";
	mysql_query($sql) OR die(mysql_error());
	echo '';

	// Breite des Thumbnails festlegen (Höhe wird automatisch angepasst)
	$width_tn = 84;
	$height_tn = intval($height * $width_tn / $width);

	// Bei GD < 2.0.1: ImageCreateTrueColor -> ImageCreate, ImageCopyResampled -> ImageCopyResized
	ImageCopyResampled($picture, $picture, 0, 0, 0, 0, $width_tn, $height_tn, $width, $height);

	// Endung "_tn" bei Dateiname hinzufügen, vor ".jgp"
	$dstPath = dirname($dstPath).str_replace('_big.', '_tn.', basename($dstPath));

	// Thumbnail in $dir mit angepasstem $filename speichern, JPG Qualität: 95
	ImageJPEG($picture, $absPath, 95);

	// Temporären Speicher auf Server wieder frei geben
	ImageDestroy($picture);

	$thumb_bild = substr($dstPath, count($_SERVER['DOCUMENT_ROOT']));
	$sql = "UPDATE user_account SET avantar_th='$thumb_bild' WHERE uid='$useruid'";
	mysql_query($sql) OR die(mysql_error());
	echo 'Dein Avantar wurde erstellt und gespeichert';

	// Nachdem Thumbnails erstellt wurden, das Original Bild löschen
	unlink(str_replace('_tn.', '.', $dstPath));
}
 
hab mal das script probiert! Aber ich bekomme nixhts als eine leere seite! keine fehler meldung kein garnichts! Muss ich da noch was anpassen?
 
HE HE Ich will dich ja nicht Ärgern oder gar beanspruchen aber (nicht böse sein bin eben was bilder upload un thump erstellen absolut neuling) beim uploaden hängt sich meinbrowser auf und dann passiert garnichts mehr! Aber trozdem grossen dank an dich Gumbo
 
Zurück