php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.03.2007, 19:03  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard HTTP 500 abfangen

Sagt mal, ich möchte PHP-Fehler im Produktiv-System dem Benutzer nicht direkt anzeigen, jedoch trotzdem sinnvolle Fehlermeldungen ausgeben.

Kategorien in etwa: Datenbank am Arsch, Skript-Fehler (wird natürlich schön formuliert), Misskonfiguration.

Ich könnte natürlich der Datenbank-Klasse sagen, wenn der Verbindungsaufbau scheitert -> ErrorDocument laden, im Header 500 senden o.ä.

Würde das aber gerne global abfangen, geht das mit den Error-Handler-Funktionen von PHP? (ich weiß das ist nicht gerade eine fortgeschrittene Frage, aber zumindest das Thema - andernfalls kann der Thread ja verschoben werden ) Wenn ja ist die Datenbank-Verbindung ja wohl gerade ein Spezialfall, da es ja eigentlich ein MySQL- und kein PHP-Fehler ist oder?
Zergling-new ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.03.2007, 19:12  
CIX88
Gast
 
Beiträge: n/a
Standard

Warum so kompliziert, wenn du die Möglichkeit mit .htaccess hast, eine eigene Datei für 500 zu erstellen.
War jetzt so mein erster Gedanke
  Mit Zitat antworten
Alt 17.03.2007, 19:16  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Zergling,

Die Frage ist

- wann tritt ein 500er auf
- warum willst du diesen "provozieren"

?

Grundsätzlich heißt 500 interner Server-Fehler. Dieser sollte bei einem Datenbank-Fehler IMHO nicht auftreten.

CIX88 kann ich nur zustimmen. Die Direktive "ErrorDocument" hilft da weiter.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 17.03.2007, 19:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ja, htacces + ErrorDocument kenne ich. Aber der Fehler bleibt dann ja trotzdem unbekannt.

Meine Intention ist eine erweiterte 500er Meldung mit Angabe des Grundes. Für mich ist ein Datenbank-Fehler schon ein Server-Fehler. Aber ich gebe dir Recht, man kann darüber streiten.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
Zitat:
500 Internal Server Error

The server encountered an unexpected condition which prevented it from fulfilling the request.
Fragt sich, wie ein Request definiert ist.

Aber mal abgesehen von diesem Grenzfall ist ein Skript-Fehler ja einer. Wie könnte ich diesen abfangen und sinnvoll verarbeiten?

Vorerst möchte ich eigentlich nur den PHP-Fehler erkennen und dann einen header/HTTP 500 senden und dort diesen PHP Fehler anzeigen.
In PHP kann ich das ganze nicht selbst umsetzen, denn wenn der Fehler auftritt war's das ja auch schon mit PHP. Deshalb muss das ganze entweder vom Server (Apache) oder vom PHP-Errorhandling übernommen werden.
Das Apache das zufriedenstellend und mit PHP kooperierend für mich übernimmt glaube ich nicht, bleibt noch letzt genanntes, womit ich mich jedoch noch nicht gut genug auskenne.

Deshalb wüsste ich gerne ob es damit möglich ist. Wenn ja werde ich mich dort mal hineinvertiefen und danach vielleicht auch feststellen, dass das ganze Vorhaben Käse ist. Aber das kann ich jetzt noch nicht so beurteilen.
Zergling-new ist offline   Mit Zitat antworten
Alt 17.03.2007, 19:36  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
danach vielleicht auch feststellen, dass das ganze Vorhaben Käse ist
Nö finde ich nicht, wäre schon interessant zu wissen, wo was passiert wenn 500 kommt.
Kenne aber auch keine Methode (bisher noch nicht so wirklich damit befasst) womit man das abfangen könnte.

Müsste man ja den Verlauf vom Script oder Prozess irgendwie mitverfolgen ?
  Mit Zitat antworten
Alt 17.03.2007, 19:45  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Naja die Error-Handler von PHP gibt es ja nicht umsonst nehme ich an. Die müssen ja schon irgendwie mit dem Kern kommunizieren.

Ich klick & les mich mal durch die Error-Handling-Funktionen im Manual.
http://de.php.net/manual/de/ref.errorfunc.php
Zergling-new ist offline   Mit Zitat antworten
Alt 17.03.2007, 19:48  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo Zergling,

Zitat:
Vorerst möchte ich eigentlich nur den PHP-Fehler erkennen und dann einen header/HTTP 500 senden und dort diesen PHP Fehler anzeigen.
Dafür setze ich einen eigenen ErrorHandler (set_error_handler) und verarbeite mit diesem den aktuellen Fehler plus Stacktrace (debug_backtrage). Sollte es ein Fehler sein, der von PHP geworfen wird und die Implementierung selbst betrifft (z.B. ein Null-Pointer), kann man mit "error_prepend_string" und "error_append_string" arbeiten und um die Meldung ein hübsches HTML machen.

Im PHP-Manual habe ich nach einem kurzen Blick nichts wirklich spannenderes gefunden. Apache-mäßig gibts eigentlich nur die "ErrorDocument"-Geschichte. Möchtest du hier dynamisch reagieren, müsste man sich etwas mit SSI ausdenken, halte ich aber für oversized.

Ich würde eine Kombi aus eigenem ErrorHandler machen (diese geht immer in PHP, da du die einmal richtig implementiert hast) und der Möglichkeit mit "error_prepend_string" und "error_append_string" einen Null-Pointer zu formatieren.

[EDIT]: Mit einem eigenen ErrorHandler lässt sich auch schön eine eigene Fehler-Logging-Methode einbeziehen und so sieht man die Fehler der Software auf lange Sicht...
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 18.03.2007, 12:03  
Erfahrener Benutzer
 
Registriert seit: 03.03.2007
Beiträge: 112
Schnulli
Standard

Aber nur für warning, notices und per trigger_error ausgelöste Nachrichten.
Parse errors, call to undefined function usw lassen sich damit nicht verarbeiten.
Schnulli ist offline   Mit Zitat antworten
Alt 18.03.2007, 15:05  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Das sind allerdings Fehler, die bereits bei der Entwicklung auftreten (sollten), weswegen es später in der Laufzeit eben eigentlich vernächlissgbar sein sollten ^^
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline   Mit Zitat antworten
Alt 20.03.2007, 17:01  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

@Zergling: Hast du dir das Thema trigger_error und set_error_handler mal angesehen? Erfüllt das deine Erwartungen?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Was ist mit GET http request gemeint? cyberholic PHP Tipps 2008 6 03.05.2008 12:09
Event abfangen Ambience JavaScript, Ajax und mehr 4 30.08.2007 14:36
http Authentifizierung Lara PHP Tipps 2006 4 30.09.2006 00:38
.htaccess / http nein, ftp ja ??? stefanjann Server, Hosting und Workstations 5 23.02.2006 14:05
http freq.9 PHP Tipps 2006 2 21.02.2006 19:57
code 404 not found abfangen janni PHP Tipps 2005-2 4 26.10.2005 19:57
[Erledigt] HTTP POST Senden und Antwort Abfangen PHP Tipps 2005-2 7 10.09.2005 16:05
HTTP Header empfangen ? atom-dragon PHP Tipps 2005-2 16 03.09.2005 20:10
umschalten des http / https protokolls mit php ohne redirect PHP Tipps 2005 2 12.01.2005 15:29
HTTP Login Request PHP Tipps 2004-2 1 16.12.2004 12:30
Übermittlung von HTTP REFERRER feststellen PHP Tipps 2004-2 14 08.12.2004 18:05
ankommender http header in einem php script auslesen PHP Tipps 2004 0 19.07.2004 23:37
http header verändern - script zum browser machen PHP Tipps 2004 11 06.07.2004 17:43
IE session und proxy über http 1.1 PHP-Fortgeschrittene 3 08.06.2004 18:16
HTTP Post mit PHP (Stream Funktionen) PHP-Fortgeschrittene 12 04.06.2004 11:16

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
fehler 500 abfangen, php error 500 abfangen, http 1.1 500 interner serverfehler, error 500 abfangen, php 500 abfangen, http 500 abfangen, http abfangen, apache php parse error abfangen, \error 500\ abfangen, error 500 php abfangen, php http 500 abfangen, php fehler 500 provozieren, apache error seiten abfangen, fehlercode 500 abfangen, server error abfangen, php fehlercode 500 abfangen, server fehler 500 abfangen, 500 fehler abfangen php, http500 abfangen, code 500 abfangen

Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.