Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Funktionsfähigkeit der GD-Library per PHP testen



AndreasMeier
21-09-2009, 13:22
Hallo zusammen,

ich verarbeite im Frontend einer Webseite viele Bilder per GD-Library on-the-fly weiter und lasse sie darüber anzeigen.
Klappt seit vielen Jahren auch sehr gut und einwandfrei.
Nur heute hatte ich einen längeren Ausfall, wo mir die Fehlermeldung "Error. No GD-Library" anstatt dem Bild angezeigt wurde (Provider hat heute eine neue PHP-Version eingespielt, wodurch es zum Ausfall kam).

Jetzt möchte ich im Backend der Webseite mir eine Testfunktion einbauen.
Die PHP-Funktion, um Bilder über die GD-Library laufen zu lassen, steht mir dort aber nicht zur Verfügung (oder nur mit großem Aufwand).
Wollte mir bereits die Funktion ins Backend kopieren und 1 Bild darüber testweise verarbeiten lassen. Sollte die GD-Library im Frontend wieder spinnen, würde mir das Bild im Backend auch nicht angezeigt werden. Geht aber leider nicht, da es dann doch mehrere Änderungen zur Folge hätte, die ich z.Z. nicht machen kann und möchte.

Darum meine Frage, ob einer von euch eine Idee hat, wie ich mit einem PHP-Befehl die Funktionsfähigkeit der GD-Library testen kann ??
Gibt es einen PHP-Befehl, mit dem ich o.g. Fehlermeldung erzeugen kann, wenn die GD-Library wieder spinnen sollte?

Danke und Gruß
Andreas

zenobic
21-09-2009, 15:33
Oft reicht es zu überprüfen ob eine Funktion der erforderlichen extension existiert.




if(!function_exists("gd_info")) {
$error_message = 'GD Extension ist nicht installiert.';
echo $error_message; //!< z.B. ausgabe des fehlers
exit;
}



function.gd-info.php (http://php.net/manual/en/function.gd-info.php)

AndreasMeier
21-09-2009, 16:53
D.h. wenn die GD-Library wieder nicht gehen sollte, erhält man durch die Abfrage einen Fehler, weil die Funktion keinen Wert zurück liefert. Dann kommts zur Fehlermeldung.
Stimmt das so?

zenobic
21-09-2009, 17:08
hey, ja genau.
In dem Beispiel wird die Fehlermeldung und mit exit das Skript abgebrochen (zwar nicht der beste Stil mit exit, wäre aber einfache und schnelle Lösung), wenn die GD Lib nicht existiert (
durch die Abfrage function_exists (http://de.php.net/function_exists) erhält man als Rückgabewert einen bool
).

AndreasMeier
21-09-2009, 17:18
Hallo Zenobic,

danke für die Antwort - werds gleich mal testen.

Danke und Gruß
Andreas

AndreasMeier
22-09-2009, 09:32
Jetzt muss ich trotzdem nochmal weiter bohren:

Ist damit wirklich eine Überprüfung der Funktion gegeben ?
Während des Ausfalls war per phpinfo die GD-Library trotzdem immer auf enabled. Ne Version etc. wurde auch angezeigt.
Trotzdem hat die Verarbeitung der Bilder nicht funktioniert.

Daher die Frage, ob damit wirklich eine Überprüfung der Funktion gegeben ist ?

zenobic
22-09-2009, 13:34
Ist damit wirklich eine Überprüfung der Funktion gegeben ?


Nein, lediglich ob die extension verfügbar ist.

Zur vollen Funktionalitätbegenbenheit müsste man bei jeder Funktionsanwendung mit Exceptions oder if-else arbeiten.

Ein quick&dirty beispiel bei dem jede GD Funktion, je nach Rückgabewert behandelt wird:


<?php

// create a 320*240 image
$img = @imagecreatetruecolor(320, 240)
or die('Cannot Initialize new GD image resource');

if (imagesx($img) > 0) { // imagesx - Returns the width of the given image resource.
// alles ok ist breiter als 0
// weiter mit image arbeiten
} else {
echo 'Error: imagewidth is 0.';
exit;
}

?>


Ist Zugriff auf Logfiles vorhanden oder Errors die man sich ansehen kann?

Relativ oft ist einfach das MemoryLimit oder die max_execution_time überschritten.



ini_set("memory_limit","-1");
ini_set("max_execution_time","360");