Ergebnis 1 bis 8 von 8

Thema: PHP-Warnmeldungen, muss das sein?

  1. #1
    matman
    Gast

    Standard PHP-Warnmeldungen, muss das sein?

    Hallo,

    ich habe, um nicht unnötig viel Code schreiben zu müssen, die Funktion filetype() für verschiedene Tests benutzt. So wird in einem Durchgang geprüft, ob eine Datei oder Ordner mit betreffendem Name existiert, wenn ja ob es sich um einen Ordner handelt, oder etwas beliebiges anderes ist. Siehe Beispielcode:

    Code:
    $htmFilePathTest=filetype($htmFilePath);
    
    if($htmFilePathTest!=FALSE) {
            switch($htmFilePathTest) {
                    case "dir":    echo "DIRECTORY BENUTZEN???";
                                       break;
                    default:        $errors++; $errHtmlPath=2; } }
    
    else    echo "DIRECTORY ANLEGEN???"; }
    Mein Problem ist jetzt folgendes: Wenn der Ordner noch nicht existiert, dann ist das ja kein Fehler kein Problem oder ähnliches. Die Funktion filetype() lefert FALSE, das ist super für den weiteren Programmverlauf und soll so sein. Aber PHP knallt mir dann folgende Warnmeldung ins HTML-Dokument:

    Code:
    Warning: filetype() [function.filetype]: Lstat failed for html/testordner in /var/http/admin/edit-save.php on line 40
    Das ist echt dämlich. Wozu sollen solche Warnmeldungen gut sein? Was mache ich da am besten?
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Bandit
    Gast

    Standard

    Das ist nicht dämlich, sondern logisch. Wenn ein verzeichnis nicht existiert, was soll PHP da machen? Wozu gibt es file_exists??? Alternativ könnte man die Warnung mit einem @ vorm funktionsaufruf unterdrücken, was aber unsauber wäre.

  3. #3
    matman
    Gast

    Standard

    Das ist nicht dämlich, sondern logisch.
    Logik kommt wohl auch auf den Blickwinkel des Betrachters an. Ich jedenfalls bin der Meinung, dass Programmcode möglichts kurz und einfach gehalten werden muss. Jede unnötige if-Abfrage und jeder zusätzlicher Funktionsaufruf ist Ressourcenverschwendung. Gerade bei Skriptsprachen wie PHP merkt man das schnell. Auf gut besuchten Seiten läuft da öfters mal gar nichts mehr, wenn viele Leute online sind.

    Wenn ein verzeichnis nicht existiert, was soll PHP da machen?
    Na ganz einfach: Die Funktion filetype() liefert als Rückgabewert FALSE. Was will man mehr?

    Ob daraufhin das Programm stillschweigend auf das (eventuelle) Problem reagiert, oder ob eine Warnung bzw. Fehlermeldung an den User ausgegeben wird, das sollte nach wie vor der Programmierer entscheiden. Dem Normal-User jedenfalls wird eine PHP-Meldung kaum etwas verständliches sagen.

    Warnung mit einem @ vorm funktionsaufruf unterdrücken, was aber unsauber wäre.
    Und was wäre daran unsauber? Immerhin weiss das Skript was zu tun ist, je nach Rückgabewert, es sind also alle Möglichkeiten berücksichtigt.

  4. #4
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard

    Zitat Zitat von PHP-Doku
    Gibt FALSE zurück, wenn ein Fehler auftrat. filetype() erzeugt auch eine E_NOTICE Meldung, wenn der stat-Aufruf fehlschlägt oder der Dateityp ubekannt ist.
    Wo liest du da, dass es keine Notice ausgeben soll, wenn die datei nciht existiert?
    Also passt das alles so wies ist und die funktion gibt nen fehler auf, weil sie die Datei nicht findet

    Also ist das auch kein unnötiger code
    Something big is coming. And there will be pirates and ninjas and unicorns...

  5. #5
    Bandit
    Gast

    Standard

    @matman
    wenn du sowieso alles besser weißt, warum fragst du dann eigentlich noch?

  6. #6
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Jetzt hört doch mal auf!
    Also:
    Code:
    <?
    $htmFilePathTest=@filetype&#40;$htmFilePath&#41;; 
    
    if&#40;$htmFilePathTest !== FALSE&#41;
    &#123; 
            switch&#40;$htmFilePathTest&#41;
            &#123; 
                    case "dir"&#58;    echo "DIRECTORY BENUTZEN???"; 
                                       break; 
                    default&#58;        $errors++; $errHtmlPath=2;
             &#125;
    &#125;
    else
             echo "Directory anlegen???";
    ?>
    So einfach...
    !== ist hier übrigens wirklich zu empfehlen, gibt ja Dateien ohne Endung und solche Sachen...

    Viele liebe Grüße
    The User

  7. #7
    Forum Guru
    Registriert seit
    04.04.2005
    Beiträge
    4.139
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    Oder einfach die Fehler nicht ausgeben.
    Per error_reporting oder gleich alle per
    Code:
    ini_set&#40;'display_errors',0&#41;;
    Facebook Gruppe: Böses Encoding

  8. #8
    matman
    Gast

    Standard

    Danke für die Antworten.

    Alle Unklarheiten sind nun beseitigt

Ähnliche Themen

  1. der weihnachtsmann muss tot sein.....
    Von opex im Forum Das Forum für Spiele, Fun & Jokes
    Antworten: 4
    Letzter Beitrag: 03.12.2007, 18:04
  2. Physik...WIe groß muss der Spiegel sein...?
    Von Gast im Forum Off Topic und Quasselbox
    Antworten: 7
    Letzter Beitrag: 25.03.2007, 13:03
  3. um zu downloaden muss man registriert sein!
    Von wurmax im Forum Tutorials, Workshops und Anleitungen
    Antworten: 3
    Letzter Beitrag: 07.09.2006, 11:26
  4. Hompage läuft im frame muss das sein?
    Von danchen im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 21.12.2005, 21:13

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •