Pit: php: Scriptfehler zur Laufzeit generieren

Hallo Forum,

eine ungewöhnliche Frage, aber es gibt einen realen Hintergrund:

Eine Anwendung läd eine Datei zu meinem Server und wertet nur aus, ob das entgegennehmende Script läuft oder nicht. Das bedeutet, die Anwendung erwartet keinen Rückgabewert des Scriptes.

Unterm Strich erfährt aber so der User auch nicht, ob das Parserscript das macht, was er erwartet. Nur, wenn das Script nicht läuft, erhält der User eine Fehlermeldung.

Gibt es eine Möglichkeit, aus einem fehlerfrei laufenden Script zur Laufzeit ein nicht laufendes zu machen, d.h. einen fehler 500 oder sowas in der Art zu generieren? ParseError schließt sich ja aus, weil das ja vor dem Laufen passiert...

Pit

  1. Gibt es eine Möglichkeit, aus einem fehlerfrei laufenden Script zur Laufzeit ein nicht laufendes zu machen, d.h. einen fehler 500 oder sowas in der Art zu generieren? ParseError schließt sich ja aus, weil das ja vor dem Laufen passiert…

    Die Funktion trigger_error() oder deren Alias user_error() sollte Dir helfen. Willst Du einen fatalen Fehler (mit Abbruch), dann setze den error-type (zweites Argument) auf E_USER_ERROR.

    Links in der Auswahlliste der PHP-Dokumentation steht weiteres. Willst Du statt einem "500erter" einen Header mit einem willkürlichen Statuscode senden, dann lasse den error-type auf E_USER_NOTICE, weiter hilft Dir dann header().

    Zusätzliche Informationen logge (vor dem Abbruch!) mit error_log().

    1. Hallo,

      Die Funktion trigger_error() oder deren Alias user_error() sollte Dir helfen. Willst Du einen fatalen Fehler (mit Abbruch), dann setze den error-type (zweites Argument) auf E_USER_ERROR.

      Wow. Ich wußte nciht, dass php selbst dafür eine Funktion bereit stellt. In der Zwischenzeit hatte ich schon eine Idee, indem ich per header: location auf ein fehlerhaftes Script weiterleite. Hat auch funktioniert, aber trigger_error()/user_error(); ist natürlich Klassen besser.

      Links in der Auswahlliste der PHP-Dokumentation steht weiteres. Willst Du statt einem "500erter"

      Nein, ein 500erter ist genau, was ich haben möchte 😀

      Danke!

      Pit

  2. Hi,

    Gibt es eine Möglichkeit, aus einem fehlerfrei laufenden Script zur Laufzeit ein nicht laufendes zu machen, d.h. einen fehler 500 oder sowas in der Art zu generieren?

    if () {
      $x = 1 / 0;
    }
    

    cu,
    Andreas a/k/a MudGuard

    1. if () {
        $x = 1 / 0;
      }
      

      Warum hast Du das nicht mit "Humor" "getaggt" und den Quellcode als "bad" markiert?

      1. Hi,

        if () {
          $x = 1 / 0;
        }
        

        Warum hast Du das nicht mit "Humor" "getaggt" und den Quellcode als "bad" markiert?

        warum hätte ich das tun sollen? Es ging darum, einen Laufzeitfehler zu provozieren. Eine Division durch Null sollte das leisten.

        cu,
        Andreas a/k/a MudGuard

        1. if () {
            $x = 1 / 0;
          }
          

          Warum hast Du das nicht mit "Humor" "getaggt" und den Quellcode als "bad" markiert?

          Ein Gleichnis:

          Wenn man am Telefon jemanden los werden will kann man dem sagen: "Hör mal. Ich hab mir in den Finger geschnitten. Das suppt." oder sich mit einem Hammer auf den Zeh hauen. Du bist, so scheints, ein Fan der zweiten Variante.

          Das gilt auch, wenn der TO im Hinblick auf die Formulierung "Gibt es eine Möglichkeit, aus einem fehlerfrei laufenden Script zur Laufzeit ein nicht laufendes zu machen" eine derart humorvolle Antwort geradezu provoziert hat.

          1. if () {
              $x = 1 / 0;
            }
            

            Warum hast Du das nicht mit "Humor" "getaggt" und den Quellcode als "bad" markiert?

            Ein Gleichnis:

            Wenn man am Telefon jemanden los werden will kann man dem sagen: *"Hör mal. Ich hab mir in den Finger geschnitten. Das suppt.

            Vorsicht! Wenn das ein Kanibale ist, wirste den soo nicht los, ganz im Gegenteil 😉

            1. Wenn man am Telefon jemanden los werden will kann man dem sagen: *"Hör mal. Ich hab mir in den Finger geschnitten. Das suppt.

              Vorsicht! Wenn das ein Kanibale ist, wirste den soo nicht los, ganz im Gegenteil 😉

              Sicherlich gibt die AfD gleich eine Warnung heraus...

              1. Wenn man am Telefon jemanden los werden will kann man dem sagen: *"Hör mal. Ich hab mir in den Finger geschnitten. Das suppt.

                Vorsicht! Wenn das ein Kanibale ist, wirste den soo nicht los, ganz im Gegenteil 😉

                Sicherlich gibt die AfD gleich eine Warnung heraus...

                Ich frage mich wie Du bei diesem Verein landen konntest!

                1. Wenn man am Telefon jemanden los werden will kann man dem sagen: *"Hör mal. Ich hab mir in den Finger geschnitten. Das suppt.

                  Vorsicht! Wenn das ein Kanibale ist, wirste den soo nicht los, ganz im Gegenteil 😉

                  Sicherlich gibt die AfD gleich eine Warnung heraus...

                  Ich frage mich wie Du bei diesem Verein landen konntest!

                  Das war einfach! Die haben mich auf die Liste derer gesetzt, die unfreiwillig nach der Machtergreifung und dem Brand des Bundestages in Bergen-Belsen, Buchenwald oder Dachau vor der Wut der Bevölkerung geschützt werden sollen. Da musste ich doch dem Fanclub beitreten - oder?

                  1. Nun, auch Kabarettisten, Comedians und Komiker tragen eine politische Verantwortung. Es kommt darauf an, deren diesbezüglichen Standpunkt herauszufinden um damit selbst entscheiden zu können ob man über deren Witze lachen oder weinen soll!

                    1. ob man über deren Witze lachen oder weinen soll!

                      Ich bin mir höchst unsicher, ob ich Dich richtig verstehe oder ob Dir klar ist, wem Du antwortest oder ob Dein

                      Ich frage mich wie Du bei diesem Verein landen konntest!

                      nun nicht vielleicht doch ganz schräger Humor ist. (Mit "Verein" hast Du ja wohl die AfD gemeint.)

                      Den Witz, über den wir uns hier unterhalten, hat doch weder die AfD gemacht, noch lacht die darüber.

                      1. Hallo Kollege,

                        Eines ist sicher: Wer real existierende Parteien namentlich ins Spiel bringt und dabei seinen eigenen Klassenstandpunkt nicht klar zum Ausdruck bringt, macht sich sowohl unglaubwürdig als auch lächerlich.

                        MfG

                        1. Ich versichere Dir, der "Klassenstandpunkt" derer, die einst — dank Stalins Panzer — die DDR beherrschten, war alles andere als ein "Klassenstandpunkt", nämlich ein "Herrscherstandpunkt".

                          Und meinen Standpunkt habe ich, jedenfalls "für hinreichend des Lesens mächtige als auch ausreichend intelligente und aufmerksame Leser" hinreichend deutlich gemacht.

    2. Hi,

      Gibt es eine Möglichkeit, aus einem fehlerfrei laufenden Script zur Laufzeit ein nicht laufendes zu machen, d.h. einen fehler 500 oder sowas in der Art zu generieren?

      if () {
        $x = 1 / 0;
      }
      

      ...finde ich auch kreativ 😉

      Pit

  3. Eine Anwendung läd eine Datei

    Idee: Die Datei befragen. z.B. über LOCK_NB

    MfG

  4. Tach!

    Gibt es eine Möglichkeit, aus einem fehlerfrei laufenden Script zur Laufzeit ein nicht laufendes zu machen, d.h. einen fehler 500 oder sowas in der Art zu generieren? ParseError schließt sich ja aus, weil das ja vor dem Laufen passiert...

    Die Antwort mit Statuscode 500 unterscheidet sich nicht prinzipiell von Antworten mit anderen Statuscodes. Man kann diesen Statuscode also ebenso mit der header()-Funktion setzen.

    header("HTTP/1.0 500 Internal Server Error");
    

    Im Gegensatz zum Provozieren eines Fehler mit trigger_error() oder ungültigen Operationen, behält man so die volle Kontrolle über den weiteren Verlauf und kann auch die Ausgabe gestalten, ohne dass PHP einen Fehlermeldungstext einfügt.

    dedlfix.

    1. Hi dedlfix,

      Im Gegensatz zum Provozieren eines Fehler mit trigger_error() oder ungültigen Operationen, behält man so die volle Kontrolle über den weiteren Verlauf und kann auch die Ausgabe gestalten, ohne dass PHP einen Fehlermeldungstext einfügt.

      Ist ein Argument, danke.

      Pit

  5. Hallo alle,

    warum probiert's denn keiner mit einer Variation von

    <?php
    http_response_code(500);
    ?>
    <html>
    <body>
    <p>Aua!</p>
    </body>
    </html>
    

    Rolf

    --
    sumpsi - posui - clusi
    1. Das provoziert ja keinen Fehler 😉

      1. Hallo pl,

        ich weiß, ist nur Fake News. Aber wenn der Aufrufer doch betrogen werden will?

        Mein Fehler war nur, dass ich dedlfixens gleichartigen und 3 Stunden älteren Vorschlag übersehen hatte…

        Rolf

        --
        sumpsi - posui - clusi