Willkommen Gast. Bitte anmelden oder registrieren.

Autor Thema: Gibt's System-Messages noch?  (Gelesen 4663 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Gibt's System-Messages noch?
« am: 18. März 2012, 08:08:06 »
Hallo,

ich habe beim Aufräumen meines auf 2.5 umgestellten Templates auch ein css für #system-message gefunden. Kann mir jemand sagen, ob das so überhaupt noch zum Einsatz kommt, bzw. wie ich das Testen kann.
Ich kann durch Einschalten des Debug-Modus nur ein #system-debug erzeugen.

Ich bin der Mainung, dass das zu 1.5-Zeiten noch benutzt wurde.

Joomla-Hilfe

  • Oberwetterfrosch (Mod)
  • Beiträge: 155
Antw: Gibt's System-Messages noch?
« Antwort #1 am: 18. März 2012, 08:51:10 »
Messages gibt es immer noch. Verschick eine Mail oder produzier einen Fehler, dann siehst du sie.
Dietmar

Die Realität ist eine Halluzination, die durch akuten Alkoholmangel hervorgerufen wird.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Gibt's System-Messages noch?
« Antwort #2 am: 18. März 2012, 12:30:07 »
Meine letzten Fehler führten dazu, dass die Seite ganz weiß blieb :-)

Wie musste die Meldung im Frontend denn aus? So wie die 'Installation ist durchgeführt'-Meldungen im Backend?
Fehler erzeugen bedeutet einen php-Fehler einzubauen oder eine bestimmt Log-API aufzurufen?

Joomla-Hilfe

  • Oberwetterfrosch (Mod)
  • Beiträge: 155
Antw: Gibt's System-Messages noch?
« Antwort #3 am: 18. März 2012, 17:13:22 »
Wie die Meldungen aussehen, ist vom CSS abhängig... Aber der erzeugte HTML-Code ist derselbe wie im Backend, ja.

PHP-Fehler können nicht als Joomla-Systemmeldung ausgegeben werden. Wie soll das gehen?
Dietmar

Die Realität ist eine Halluzination, die durch akuten Alkoholmangel hervorgerufen wird.

J-Worker

  • Bestätigter Nutzer
  • Beiträge: 18
  • Hat keine Ahnung. Davon aber ganz viel...
    • Webentwicklung mit Joomla!
Antw: Gibt's System-Messages noch?
« Antwort #4 am: 18. März 2012, 18:07:38 »
Hi,

es sollte auch reichen wenn man sich im Frontend mit falschen Daten einloggen will...

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Gibt's System-Messages noch?
« Antwort #5 am: 18. März 2012, 22:51:44 »
PHP-Fehler können nicht als Joomla-Systemmeldung ausgegeben werden. Wie soll das gehen?
Ich hab mit ja fast gedacht, dass das nicht funktioniert. Deshalb habe ich ja gefragt, wie ich so etwas am besten produziere.
Mir würde es mehr helfen, wenn ich gesagt bekäme, wie ich das mache, nicht, wie nicht.

Aber die Meldungen, die ich im Backend sehe, sollte ich auch im Frontend produzieren können. Da wird ja bestimmt eine API benutzt. Vielleicht hilft aber ja auch schon der Tipp mit dem Login. Ich habe auf der Seite nur ein verstecktes Login, das sollte damit sollte ich das aber einfach testen können.

Ich will nur nicht riskieren, dass mein Template die Meldungen vielleicht unterdrückt oder die Sichtbarkeit reduziert.

Thx!

EDIT:
Zitat
Wie soll das gehen?
Try/Catch gibt's auch in PHP.
Mag sein, dass das für Joomla (im Moment) kein gangbarer weg ist, da ich den Core aber nicht kenne, kann ich weder behaupten, dass das möglich ware, noch, dass das gar nicht oder nur eingeschränkt geht.
Wie die diversen Probleme mit leeren Seiten bei Inkompatibilitäten beweisen, wäre ein Fehlerhandling seitens Joomla bei  Plugins doch auch eine schöne Sache.
Wenn man sich mit MVCs schmückt, dann sollte ordentliches Exception-Handling eigentlich nahe liegen.
« Letzte Änderung: 19. März 2012, 09:46:39 von Sammy »

sybrek

  • Bestätigter Nutzer
  • Beiträge: 25
Antw: Gibt's System-Messages noch?
« Antwort #6 am: 19. März 2012, 16:07:33 »
Try/Catch ist ExceptionHandling und hat nichts mit der Error-, Warning-, Message-Meldung zu tun.
Die Meldungen sind "geplante" Ereignisse wie z.B. falscher Login, irgendwelche Meldungen, usw.

Exceptions sind eine Möglichkeit ungewollte Probleme zu behandeln. Der Bericht wird aktuell zumeist in die Log geschrieben.

PS: Wenn es um PHP-Fehler geht, schalte doch den Debug-Modus ein um den CallStack zu bekommen.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Gibt's System-Messages noch?
« Antwort #7 am: 19. März 2012, 17:02:26 »
Try/Catch ist ExceptionHandling und hat nichts mit der Error-, Warning-, Message-Meldung zu tun.
Die Meldungen sind "geplante" Ereignisse wie z.B. falscher Login, irgendwelche Meldungen, usw.

Exceptions sind eine Möglichkeit ungewollte Probleme zu behandeln. Der Bericht wird aktuell zumeist in die Log geschrieben.

PS: Wenn es um PHP-Fehler geht, schalte doch den Debug-Modus ein um den CallStack zu bekommen.
Zitat
PHP-Fehler können nicht als Joomla-Systemmeldung ausgegeben werden. Wie soll das gehen?
Ich war der Meinung, dass man mittles try/catch auch PHP-Fehler behandeln können sollte. Mehr wollte ich damit nicht sagen.

Das eigentliche Thema waren die Systemmeldungen und die werde ich hoffentlich mit falschen Login produzieren können. Falls mir nicht angezeigt wird, dann hast Du mir insofern geholfen, dass ich im Log ansehe, ob die erhoffte Meldung dort hinterlegt wurde.

Joomla-Hilfe

  • Oberwetterfrosch (Mod)
  • Beiträge: 155
Antw: Gibt's System-Messages noch?
« Antwort #8 am: 19. März 2012, 17:26:06 »
Ich war der Meinung, dass man mittles try/catch auch PHP-Fehler behandeln können sollte. Mehr wollte ich damit nicht sagen.
Könnte man, aber wozu soll das gut sein? Die Meldungen von PHP sind in den meisten Fällen umfassend und eindeutig. Daß der durchschnittliche Joomla-User mit dem Verstehen solcher Meldungen schon bereits dadurch überfordert ist, daß er nicht in der Lage ist, sie in eine Suchmaschine zu kopieren und die Ergebnisse verstehend zu lesen, macht die Meldungen nicht unbrauchbar.

Wie blödsinnig aber selbst generierte Meldungen sein können, macht Joomla seit Jahren vor, wenn es erzählt, daß der Ordner nicht beschreibbar sei, aber nicht verrät, welcher. Joomla hat ja nur 1 oder 2 Ordner, bei denen man nach der Ursache suchen müßte...
Dietmar

Die Realität ist eine Halluzination, die durch akuten Alkoholmangel hervorgerufen wird.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Gibt's System-Messages noch?
« Antwort #9 am: 19. März 2012, 18:41:17 »
Könnte man ist ja schon etwas anderes als 'kann man nicht', das war ja daraus bezogen, wie ich mein Template testen kann.
Ein Anwendungsfall (wichtiger) wäre für mich tatsächlich das Einbinden von Plugins und Erweiterungen in try/catch-Blöcken um das Abbrechen des gesamten Systems zu unterbinden. Ob das auch sicherheitskritisch sein kann, weiß ich nicht (analog Bufferoverflows).
Wir hatten doch vor kurzem zwei Fälle, in denen joomla nur leere Seiten lieferte. Zumindest meinen Fall hätte man userfreundlich loggen oder ausgeben können. Wenn ich dann die Info habe 'Plugin xy abnormal beendet', dann muss ich wenigstens nicht mehr den Schuldigen suchen.

Wie gesagt, wenn man in joomla Software wie MVC einsetzt, dann macht objektorientiertes Fehlerhandling auch Sinn - mit php5.2 als Basis ist das ja durchaus möglich. Aber vielleicht ist das ja sogar schon in Arbeit.

...ja, an die beschreibbaren Ordner erinnere ich mich auch.

bembelimen

  • moderatives Dielektrikum
  • Beiträge: 227
  • Ich kam, sah und zensierte...
    • Joomla! Vereinsverwaltung
Antw: Gibt's System-Messages noch?
« Antwort #10 am: 19. März 2012, 19:14:30 »
Es ist nicht die Aufgabe von Exceptions generell Fehler abzufangen und dann eine Fehlermeldung auszugeben, denn dafür gibts die "error reportings". Die müssen halt einfach aktiviert werden, dann hat man auch keine weiße Seite.

Exceptions sind, wie der Namen schon sagt, Ausnahmen. Dabei sollten nicht alle alles mit dem catch-Block abgefangen (und unterdrückt) werden, sondern nur...Ausnahmen. Das heißt, wenn ich z.B. eine Datei lesen will und das schlägt fehl, dann sollte da kein generisches catch stehen, sondern ein explizites, dass z.B. darauf reagiert, dass die Datei nicht vorhanden ist. Ein anderes catch behandelt den Fehler, dass die Datei nicht beschreibbar ist. Alle restlichen Fehler werden nicht abgefangen, sondern einfach mittels error reporting ausgegeben (bzw. durch dieses unterdrückt).

Besonders sind Exceptions nicht dazu da um schlechte Programmierung abzufangen.
Joomla! ist auch nur ein Mensch...

Joomla-Hilfe

  • Oberwetterfrosch (Mod)
  • Beiträge: 155
Antw: Gibt's System-Messages noch?
« Antwort #11 am: 19. März 2012, 19:14:53 »
Ein Anwendungsfall (wichtiger) wäre für mich tatsächlich das Einbinden von Plugins und Erweiterungen in try/catch-Blöcken um das Abbrechen des gesamten Systems zu unterbinden.
Wäre mir jetzt neu, daß man dadurch den Abbruch durch einen Fatal Error verhindern könnte, aber ich lasse mich gern eines Besseren belehren.

Zitat
Wir hatten doch vor kurzem zwei Fälle, in denen joomla nur leere Seiten lieferte.
Joomla hat gar nichts geliefert, weil es durch einen Fatal Error gar nicht dazu kam. Und PHP war mit display_errors und/oder error_reporting der Mund verboten. Letzteres läßt sich für eine Fehlersuche durchaus ändern. Die bei der Systemprüfung empfohlene Einstellung gilt für den produktiven Betrieb.

Zitat
Wenn ich dann die Info habe 'Plugin xy abnormal beendet',
... weißt du immer noch nicht, was die eigentliche Ursache ist. Die verrät die PHP-Meldung. Also muß die Anzeige aktiviert werden, sonst nichts.
Dietmar

Die Realität ist eine Halluzination, die durch akuten Alkoholmangel hervorgerufen wird.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Gibt's System-Messages noch?
« Antwort #12 am: 19. März 2012, 20:52:56 »
Ich antworte jetzt mal Euch beiden:

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

Was immer joomla vor dem Hooken eines Plugins macht

Try {
  Hook, der einen Fehler auslöst.
} catch (ErrorExceptio) {
  Systemmessage oder Log, dass Xy einen Fehler hat
}

Was immer joomla nach dem Hooken eines Plugins macht
Das war jetzt auf dem iPad aus dem Kopf geschrieben und soll nur das Prinzip klar machen!

..und natürlich hat man die Ursache damit nicht, vielleicht ist man aber auch nur Anwender, der ein inkompatibles Plugin erwischt hat. Fehler treten übrigens auch mal in produktiven Umgebungen auf.

Und jetzt erzählt mir bitte nichts über guten oder schlechten Stil und wofür Exceptions da sind.
Ich rede hier nicht davon, dass Joomla meine schlechte Programmierung ausbügeln soll, sondern davon, dass Joomla sich gegen schlechte Programmierung oder widrige Umstände absichert und versucht, kontrolliert am Leben zu bleiben. Genau das beinhaltet Exception-Handling und nicht, dass man Ausnahmen ignoriert und sorry, aber im Falle einer Plugin-Programmierung setzt man einen catch-Block durchaus ein, um generelle Fehler abzufangen, weil man eben nicht weiß, was zur Laufzeit des Plugin alles passiert und da kann man sich nur generell absichern.

Bitte jetzt nicht jedes Wort auf die Goldwaage legen und einen einzelnen Satz zerpflücken. Ich weiß selbst, dass Joomla keine weiße Seite ausliefert, dass ist aber auch vollkommen egal, denn Joomla wird aufgerufen und verliert dann leider die Kontrolle, weshalb die Seite leer bleibt und es wäre schon, wenn das verhindert werden könnte.
« Letzte Änderung: 19. März 2012, 21:00:20 von Sammy »

Joomla-Hilfe

  • Oberwetterfrosch (Mod)
  • Beiträge: 155
Antw: Gibt's System-Messages noch?
« Antwort #13 am: 19. März 2012, 21:22:54 »
Ich rede hier nicht davon, dass Joomla meine schlechte Programmierung ausbügeln soll, sondern davon, dass Joomla sich gegen schlechte Programmierung oder widrige Umstände absichert und versucht, kontrolliert am Leben zu bleiben.
Wenn du das für eine gute Idee, hältst, reich es beim nächsten Feature Request ein. Als prüfbares Konzept natürlich, nicht nur als Idee, womöglich noch eine, die andere umsetzen sollen.

Ich tippe aber eher darauf, daß du es ganz schnell läßt, wenn du siehst, aus wie vielen einzelnen Bausteinen Joomla eine Seite zusammensetzt und wo Erweiterungsprogrammierer überall Fehler einbauen können.

Zitat
Ich weiß selbst, dass Joomla keine weiße Seite ausliefert, dass ist aber auch vollkommen egal, denn Joomla wird aufgerufen und verliert dann leider die Kontrolle, weshalb die Seite leer bleibt und es wäre schon, wenn das verhindert werden könnte.
Siehe oben: Liefer ein prüfbares Konzept ab.

Ich persönlich halte es aber für Quatsch, denn das ist Pfuschen an den Symptomen, keine Behebung der Ursachen.
Dietmar

Die Realität ist eine Halluzination, die durch akuten Alkoholmangel hervorgerufen wird.

Sammy

  • Bestätigter Nutzer
  • Beiträge: 165
Antw: Gibt's System-Messages noch?
« Antwort #14 am: 19. März 2012, 23:08:28 »
Bitte schön, es fehlte tatsächlich noch die 2. Callback-Methode, jetzt am PC deutlich einfacher zu testen:
<?php
/*set_error_handler("exception_error_handler");
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
echo 'Error-Handler';
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}

register_shutdown_function('my_shutdown_handler');
function my_shutdown_handler() {
if ($error = error_get_last()) {
ob_end_clean();
my_error_handler($error['type'], $error['message'], $error['file'], $error['line']);
}
}*/


echo 'Start - Das Joomla lebt!'.'<br/>';

try {
echo '  starte Plugin....'.'<br/>';
// include ('badcode.php');
echo '  Plugin fehlerfrei beendet....'.'<br/>';
} catch (
ErrorException $e) {
echo 'Plugin mit Fehler abgebrochen: '.'<br/>'.$e.'<br/>';
}

echo 
'Ende - Das Joomla lebt immer noch!'.'<br/>';

1. Das Ausführen und alles ist OK.
2. Das auskommentierte include scharf machen und neu starten -> Fehler, Abbruch ohne Aufräumen des äußeren Codes
3. Den oberen Codeblock mit beiden Callback-Methoden scharf machen -> Fehler, aber die Controlle bleibt 'bei Joomla'...
.... so dass z.B. offen Dateien oder Datenbank-Connection wieder geschlossen werden können und Logs geschrieben.

Zitat
Ich persönlich halte es aber für Quatsch, denn das ist Pfuschen an den Symptomen, keine Behebung der Ursachen.
Wenn Du das Lindern der Folgen und Kontrollieren dessen, was schief läuft, als Pfuschen bezeichnest, dann hast Du recht. Ich glaube aber eigentlich nicht, dass Du das so meintest und eher, dass Du die oben fett geschriebenen Möglichkeiten durchaus als positiv annehmen würdest, wenn Du für den umgebenen Code zuständig wärst.

---

Ich verstehe das, was hier (leider wieder) abgelaufen ist, nicht wirklich:
- Ich suche eine Möglichkeit einen System-Meldung zu produzieren, daraus wird ein kleiner Teil herausgepickt und behauptet, das ginge nicht.
PHP-Fehler können nicht als Joomla-Systemmeldung ausgegeben werden. Wie soll das gehen?
- Ich antworte nach bestem Wissen und Gewissen, wie ich meine, wie das rein technisch doch gehen müsste und warum ich das für sinnvoll halte.
- Beispiel und Ursprung werden völlig weggelassen und allgemeine Floskeln losgelassen, die sowieso jeder für sich in Anspruch nimmt.
- Ich versuche die Anmerkungen zu bestätigen und zu erklären, warum das ursprüngliche technische Thema (try/catch) dafür genau passt und darf mir dann anhören, dass Pfusch wäre und das ja sowieso nicht lauffähig ist.
- anstatt technisch zu bleiben kommt dann gleich der große Hammer, dass ich ja gar kein Recht habe irgendetwas festzustellen, weil ich das ja niemals direkt in Joomla einbauen würde (was ich mich mit meiner fehlenden PHP-Routine auch gar nicht trauen würde) - wenn gar nichts hilft, dann werden wir global - völlig am eigentlichen Thema vorbei.

Ich will weder Joomla noch Dir ans Bein pinkeln (entschuldigt den Ausdruck), aber es muss doch erlaubt sein, eine technische Fragestellung zu diskutieren ohne gleich das Spektrum so zu erweitern, das man gar keine Chance mehr hat.
Jetzt bin ich der Böse, der Joomla nicht weiterentwickelt und nicht bereit ist, sich dort einzubringen, nur weil ich die (sorry) falsche Aussage zu einem Nebenthema nicht einfach hingenommen habe. Du hast gefragt wie das gehen soll - jetzt weißt Du's - das hätte auch ohne weitere Anspielungen funktioniert.

---

Bei allem Ärger möchte ich aber die Quelle, bei der ich die fehlende Hook-Methode wiedergefunden habe, nicht vergessen:
http://www.ein-einfaches-cms.de/fatal-error-in-php-abfangen
Ausserdem ein Dank an J-Worker: Der Login-Tipp war gut. Ich weiß jetzt, dass mein Template die Meldungen anzeigt.
« Letzte Änderung: 19. März 2012, 23:20:59 von Sammy »