Koken: fehler bei include abfangen

Hi,

ich habe ein php-script, in dem ich dynamisch andere php-scripte mittels include einbinde.
Jetzt möchte ich, dass wenn in der php-Datei ein fatal-error auftritt, dass der Benutzer der Seite nicht die php-Fehlermeldung zu sehen bekommt, sondern meine eigene Fehlermeldung (mit HTML formatiert etc).

Kann man irgendwie prüfen, ob eine php-Datei einen Fehler erzeugen würde BEVOR man sie einbindet? Oder habt ihr andere Lösungen?

  1. ich habe ein php-script, in dem ich dynamisch andere php-scripte mittels include einbinde.
    Jetzt möchte ich, dass wenn in der php-Datei ein fatal-error auftritt, dass der Benutzer der Seite nicht die php-Fehlermeldung zu sehen bekommt, sondern meine eigene Fehlermeldung (mit HTML formatiert etc).
    Kann man irgendwie prüfen, ob eine php-Datei einen Fehler erzeugen würde BEVOR man sie einbindet? Oder habt ihr andere Lösungen?

    Nein. Weil PHP Scripte nicht wie perl oder Java kompiliert, also Fehler erst während dem Ablauf sichtbar werden.

    Wichtiger wäre wohl, wenn ein solcher Fehler in ein nur dir verfügbares File geschrieben würde. Denn der Besucher deiner Seite kann/soll damit ja eh nichts anfangen

    Da ich mich nicht mit PHP auskenne verlinke ich mal eine Seite.
    http://johannes-ruthenberg.de/php-errorlog

    mfg Beat

    --
    Woran ich arbeite:
    X-Torah
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
  2. Hi,

    Kann man irgendwie prüfen, ob eine php-Datei einen Fehler erzeugen würde

    Du kannst nur prüfen ob eine Datei vorhanden ist. Ansonsten gibt es afaik seit PHP 5 try/catch, damit kannst Du ggf Fehler abfangen...

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
    1. Du kannst nur prüfen ob eine Datei vorhanden ist. .

      Jetzt möchte ich, dass wenn in der php-Datei ein fatal-error auftritt,

      wenn ich dich richtig verstehen:
      es geht nicht um einen fatalen beim include, sondern um dass der fatale fehler IM include auftritt kann (sprich wenn das script fehlerhaft ist) und nicht, wenn die datei nicht existiert

      include führt bei nichtvorhandensein einer datei zu einer warnung, lediglich require führt zu einem fatal error

      Ansonsten gibt es afaik seit PHP 5 try/catch, damit kannst Du ggf Fehler abfangen..

      das wäre eine möglichkeit - allerdings muss die fehlerbehandlungsroutine dann in den includes bereits vorgesehen sein - beliebige files einbinden dürfte wohl etwas schwieriger werden

      1. Hi,

        das wäre eine möglichkeit - allerdings muss die fehlerbehandlungsroutine dann in den includes bereits vorgesehen sein - beliebige files einbinden dürfte wohl etwas schwieriger werden

        Würdest Du denn wirklich das Einbinden von "beliebigen Files" zulassen wollen?

        Aber das php5-try-catch hat mich nicht wirklich überzeugt...

        Gruesse, Joachim

        --
        Am Ende wird alles gut.
        1. Würdest Du denn wirklich das Einbinden von "beliebigen Files" zulassen wollen?

          nein - aber ich würde auch nicht absichtlich ein script schreiben, welches fatale fehler enthält, um diese mit try/catch abzufangen :)

          Aber das php5-try-catch hat mich nicht wirklich überzeugt...

          das ist in diesem fall auch sicher äusserst unpraktisch ;)

          1. echo $begrüßung;

            [...] ich würde auch nicht absichtlich ein script schreiben, welches fatale fehler enthält, um diese mit try/catch abzufangen :)

            Das geht auch gar nicht, weil die PHP-Fehlermeldungen keine Exceptions sind. Somit gibt es auch nichts mit try/catch abzufangen.

            PHPs herkömmlicher Fehlermeldungsmechanismus existiert schon länger. Exceptions wurden erst mit PHP5 und auch nur als Zusatz eingeführt. Man kann sie im eigenen Code verwenden, von PHP aus werden jedoch keine Exceptions geworfen. Ausnahmen sind einige wenige Extensions. PDO beispielsweise kann man so konfigurieren, dass es mit Exceptions arbeitet.

            Aber das php5-try-catch hat mich nicht wirklich überzeugt...
            das ist in diesem fall auch sicher äusserst unpraktisch ;)

            ... weil nicht funktionabel.

            echo "$verabschiedung $name";

  3. echo $begrüßung;

    ich habe ein php-script, in dem ich dynamisch andere php-scripte mittels include einbinde.
    Jetzt möchte ich, dass wenn in der php-Datei ein fatal-error auftritt, dass der Benutzer der Seite nicht die php-Fehlermeldung zu sehen bekommt, sondern meine eigene Fehlermeldung (mit HTML formatiert etc).

    Ein fataler Fehler bricht die Verarbeitung komplett ab. Es ist dabei egal, in welchem Script - ob direkt aufgerufen oder eingebunden - er auftritt. Er lässt sich auch nicht abfangen, weder mit try-catch noch mit @ oder ähnlichen Dingen.

    Kann man irgendwie prüfen, ob eine php-Datei einen Fehler erzeugen würde BEVOR man sie einbindet? Oder habt ihr andere Lösungen?

    Mir fällt da höchstens ein, einen weiteren Prozess zu starten, bei dem mit dem Kommandozeilen-Client von PHP die Syntax der Datei geprüft wird.

    echo "$verabschiedung $name";

    1. Hi,

      Mir fällt da höchstens ein, einen weiteren Prozess zu starten, bei dem mit dem Kommandozeilen-Client von PHP die Syntax der Datei geprüft wird.

      Man koennte den Code auch noch eval-en - muss sich aber im klaren sein, dass das kein einfacher "Syntax-Check" ist, sondern sofortige Ausfuehrung (fehlerfreien) Codes mit allen aktuellen Berechtigungen zur Folge hat, mit allen denkbaren Konsequenzen.

      MfG ChrisB

      --
      „This is the author's opinion, not necessarily that of Starbucks.“