TS: PHP Fehler im Display anzeigen. Auch Parse-Errors werden angezeigt!

Beitrag lesen

Hello,

Ich würde mich freuen, wenn wir das Thema fürs Wiki deshalb noch zuende bearbeiten könnten, soweit das überhaupt möglich ist.

Was ich damit meine: welche Einstellung sollte man im Produktivbetrieb beibehalten? Es wäre ja auch unsinnig, vorhersehbare (provozierte) Fehler ins Log schreiben zu lassen, die ohnehin im Programm abgefangen werden sollten: z. B. Locking, Anlegen und Löschen von Dateien, usw.

Hier schon mal ein Beispiel:


  $fh = @fopen('testdatei.txt', 'x+');
  $_errormsg = error_get_last();

  echo "<pre>\r\n";
  print_r($_errormsg);
  echo "</pre>\r\n";

Das ergibt beim ersten Aufruf (die Datei testdatei.txt ist noch nicht vorhanden) keinen Fehler, vorausgesetzt alles andere stimmt und PHP darf im Pfad überhaupt eine Datei anlegen.

Beim zweiten Aufruf (die Datei sollte nun vorhanden gewesen sein) ergibt es

Array
(
    [type] => 2
    [message] => fopen(testdatei.txt): failed to open stream: File exists
    [file] => /var/www/html/errors.php
    [line] => 20
)

Wenn man das @ vor der Funktion weglässt, wird zusätlich eine Fehlermeldung generiert, die im Produktivbetrieb in Rohform tunlichst im Log landen sollte und nicht im Browser.

Um diesen "Fehler" hier qualifiziert behandeln zu können, muss man leider den Error-Text auswerten:

if (false !== strpos($_errormsg['message'], 'failed to open stream: File exists')) 
{
    ## Aktionen, wenn die Datei schon existiert hat
    ## ...
} 

Wohin würden im Wiki solche PHP-Praxis-Tipps gehören?

MMn sollte das der Weg für unser PHP-Wiki sein und nicht, was eine Variable ist. Einsteigertutorials gibt es schon genug.

Aber wie man z. B. Namespaces und Closures sinnvoll einsetzen kann, oder wie man PHP-Applikationen netzfähig (also mehrbenutzerfest) macht das findet man kaum irgendwo.

Da wird z. B. immer noch das total unzureichende move_uploaded_ file() vorgestellt, obwohl es gut beschriebene Beispiele gab, wie man es besser macht.

Glück Auf
Tom vom Berg

--
Es gibt nichts Gutes, außer man tut es!
Das Leben selbst ist der Sinn.