Auge: if(@

Beitrag lesen

Hallo

Und was ist mit Laufzeitfehlern?

Beispiel? ich weiß nicht, worauf du hinaus willst.

Ok, wich will mal versuchen, Dich da ins Bild zu setzen:

$fh = fopen($dateiname, 'rb+');

Sollte keinerlei Meldungen auslösen, wen  die Datei vorhanden ist, für den Scriptuser lesbar und schreibbar ist, und nicht gerad durch einen anderen Prozess durch dio_Funktionen geöffnet und gesperrt ist.

Du siehst also aus dem obigen Satz, dass eine Reihe von Laufzeitbedingungen vorhanden ist:

  • Datei existiert im Zeitpunkt des Zugriffes (ein vorheriges file_exists() taugt nichts)
  • Datei ist nicht gesperrt durch einen Prozess, der DIO benutzt
  • Datei ist lesbar für den anfordernden Prozess
  • Datei ist beschreibbar für den anforderden Prozess

Dies sind vier Fehlermöglichkeiten, die mir spontan einfallen. dazu gibt es in Netzen auch noch weitere Fehler, wie z.B.

  • fehlende Netzwerkverbindung
  • fehlende rechte im Netzwerk

Das Manual zu fopen sagt: "Scheitert das Öffnen der Datei, gibt die Funktion FALSE zurück.". Also prüfe ich darauf.

Dein obiger Code gibt mir die erwartete Warnung aus. Mit der nachfolgenden Prüfung (s.u.) bleibt die Warnung da, da der Fehler ja vor der Prüfung auftritt.

if ($fh===false) {  
echo "<p>Konnte Datei nicht öffnen.</p>";  
} else {  
echo "<p>Datei wurde geöffnet.</p>";  
}

Aber genau das ist doch ein Paradebeispiel dafür, dass man sich während der Entwicklung sämtliche Fehler ausgeben lassen soll, um sie auszumerzen, und im Produktiveinsatz derartige Fehler in ein für den Anwender nicht zugängliches Log gehören. Dabei ist es völlig egal, warum der Fehler auftritt. Deine ersten víer Punkte liegen unmittelbar in der Verantwortung des Entwicklers bzw. Administrators der Anwendung. Das sollte auch für den Punkt 6 (fehlende Rechte im Netzwerk) gelten. Einzig die fehlende Netzwerkverbindung kann (ohne Manipulationen[1]) zur Laufzeit auftreten.

Wenn nun Fehlermeldungen in der Ausgabe unterbunden sind (mMn vorzugsweise skriptweit und nicht befehlsgebunden) und stattdessen in ein Log geschrieben werden sowie eine angemessene Meldung an den Anwender geht (z.B. "Ihre Anfrage konnte nicht ausgeführt werden, eine Meldung an den Betreiber ...") ist die Aufgabe "Fehler abfangen" nach meiner Meinung erfüllt. Im Log steht dann ja der Grund für den Fehler.

[1] Mit Manipulationen meine ich z.B. einen Angriff auf den Server mit Löschung der zu lesenden Datei.

Tschö, Auge

--
Die deutschen Interessen werden am Liechtenstein verteidigt.
Veranstaltungsdatenbank Vdb 0.2
0 60

if(@

rap
  • php
  1. 0
    Felix Riesterer
    1. 0
      Sven Rautenberg
      1. 0
        Tom
        1. 0
          molily
          1. 0
            Tom
            1. 0
              molily
              1. 0
                Tom
                1. 0
                  at
        2. 0
          dedlfix
          1. 0
            Tom
            1. 0
              dedlfix
        3. 0
          Sven Rautenberg
          1. 0

            Wie arbeiten vernünftige Programmierer?

            Tom
            1. 5

              bitte mal wieder runterkommen

              romy
              1. 0

                Danke für Deine Fürsorge

                Tom
                • menschelei
            2. 0
              Sympathisant
          2. 1
            molily
      2. 0
        bleicher
        1. 0
          Auge
          1. 0
            bleicher
            1. 0
              Tom
            2. 0
              Auge
              1. 0
                molily
                1. 0
                  Tom
                2. 0
                  Auge
                3. 0
                  dedlfix
          2. 0
            Tom
            1. 0
              Auge
              1. 0
                Tom
                1. 0
                  Auge
                  1. 0
                    Tom
                    1. 0
                      Auge
                      1. 0
                        Tom
                        1. 0
                          Auge
                          1. 0
                            Tom
                            1. 0
                              Auge
                              1. 0
                                Tom
                            2. 0
                              dedlfix
                              1. 0
                                Tom
        2. 0

          Die Spannung wächst

          Tom
        3. 0
          Sven Rautenberg
      3. 0
        Klaus
        1. 0
          Tom
          1. 0

            vernünftige[tm] Fehlerbehandlung in PHP

            Tom
            1. 0
              molily
              1. 0
                Tom
                1. 0
                  Auge
                2. 0
                  Christian Seiler
                  1. 0
                    Tom
                    1. 0
                      molily
                      1. 0
                        Tom
                        1. 0
                          molily
                          1. 0
                            Tom
                    2. 0
                      Christian Seiler
                      1. 0
                        Tom
                        1. 0
                          Christian Seiler
                3. 0
                  molily
                  1. 0
                    Tom
        2. 0
          Sven Rautenberg