Deaktivieren von [phpBB Debug] Ausgaben?

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
olivwalt
Mitglied
Beiträge: 4
Registriert: 16.02.2008 14:30

Deaktivieren von [phpBB Debug] Ausgaben?

Beitrag 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
Benutzeravatar
Frank1604
Ehemaliges Teammitglied
Beiträge: 2106
Registriert: 07.11.2007 09:25
Wohnort: Einhausen
Kontaktdaten:

Beitrag von Frank1604 »

Mache dich mal bitte mit dem "@" Zeichen in Bezug auf php vertraut ;)
olivwalt
Mitglied
Beiträge: 4
Registriert: 16.02.2008 14:30

Beitrag 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

Code: Alles auswählen

//@define('DEBUG', false);
mit

Code: Alles auswählen

@define('DEBUG', 0);
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
Benutzeravatar
Frank1604
Ehemaliges Teammitglied
Beiträge: 2106
Registriert: 07.11.2007 09:25
Wohnort: Einhausen
Kontaktdaten:

Beitrag von Frank1604 »

Nun, dein Problem ist doch folgendes:

Dieses hier verusacht den Fehler:

Code: Alles auswählen

$fp = fsockopen("www.example.com");
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
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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").
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „[3.0.x] Mods in Entwicklung“