Seite 1 von 1
Deaktivieren von [phpBB Debug] Ausgaben?
Verfasst: 25.02.2008 11:13
von olivwalt
Hallo zusammen,
ich habe für phpBB3 einen kleinen Mod geschrieben, der einen Remote Server überwacht und den Status anzeigt. Solange der Remote Server Online ist, klappt das ganze auch wirklich super, nur wenn der Server offline ist, dann bekomme ich immer folgende phpBB Debug Ausgabe direkt auf der Forumseite:
Code: Alles auswählen
[phpBB Debug] PHP Notice: in file /portal/block/serverinfos.php on line 60: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.
[phpBB Debug] PHP Notice: in file /portal/block/serverinfos.php on line 60: fsockopen() [function.fsockopen]: unable to connect to ...
Die Anzeige im Block ist jedoch ok. Kann man diese [phpBB Debug] Ausgabe nicht daktivieren?
Danke für die Hilfe
Gruss Oliver
Verfasst: 25.02.2008 21:16
von Frank1604
Mache dich mal bitte mit dem "@" Zeichen in Bezug auf php vertraut

Verfasst: 26.02.2008 10:20
von olivwalt
Hallo Frank,
ich habe zum @folgendes gefunden
You can preface a function call with an @ sign, as in:
@foo();
This will supress the injection of error messages into the data stream output to the web client. You might do this, for example, to supress the display of error messages were foo() a database function and the database server was down. However, you're probably better off using php configuration directives or error handling functions than using this feature.
Ich würde lieber der letzten Empfehlung folgen, und das entsprechende Error Handling konfigurieren. Ich habe dazu mal in der config.php
mit
ersetzt.
Leider bekomme ich damit nur noch mehr "[phpBB Debug] PHP Notice:" Ausgabe auf der Seite.
Kann ich solche Fehlermeldung in phpBB3 in der config abschalten?
Gruss Oliver
ps: Das mit dem @ funktioniert natürlich.
Gruss Oliver
Verfasst: 26.02.2008 17:46
von Frank1604
Nun, dein Problem ist doch folgendes:
Dieses hier verusacht den Fehler:
Wie wäre es denn mit sowas:
Code: Alles auswählen
$fp = @fsockopen("www.example.com");
if(!fp)
{
//Fehlerbehandlung
}
in diesem Zusammenhang kannst du dir auch mal die optionalen Parameter 3 und 4 der fsockopen Funktion ansehen.
function fsockopen
Gruß Frank
Verfasst: 27.02.2008 01:25
von gn#36
In einigen Fällen ist es günstiger selbst eine Fehlerbehandlung zu schreiben, als sich Fehler ausgeben zu lassen, eine Fehlermeldung sollte eigentlich immer nur dann ausgegeben werden, wenn das Programm nicht mehr auf das Problem reagieren kann. In dem Fall kennst du aber ja den Fehler und kannst ihn behandeln.
In PHP 5 steht dir auch noch eine etwas bessere Methode zur Verfügung: try & catch. Allerdings ist die auch noch recht unausgereift in meinen Augen, da es keine "magischen" throws gibt sondern man den Fehler "manuell" erzeugen muss. Javaähnliche Konstrukte mit detaillierter Fehlerbehandlung sind also leider so nicht möglich. Du könntest höchstens noch den Error-Handler von PHP durch deinen eigenen ersetzen und dann z.b. selber entscheiden was du wie loggen möchtest (oder vielleicht auch in einer Mail verschicken oder ausgeben oder einfach ignorieren...). Da solltest du allerdings natürlich gut aufpassen, dass da keine Fehler drin sind, denn wenn der Error-Handler nicht funktioniert bekommst du evtl. gar keine Ausgabe bei Fehlern mehr oder das Programm läuft sogar unerwünscht weiter. Andererseits kannst du da natürlich recht spezifisch auf die einzelnen Fehler reagieren ("Fehler A aufgetreten in Datei D wird in Datei L geloggt, während Fehler A aufgetreten in Datei E in Datei M geschrieben wird").