In Datei schreiben funktioniert nicht

  • Moin


    Ich habe eine Datei die alle 30 Min ausgeführt wird (cronjob). Bei mir ist es ein "Verbindungs Test"

    Wenn keine Verbindung vorhanden ist, soll er doch bitte einen neuen DB Eintrag machen. Und das funktioniert auch wunderbar.


    So sieht das aus:


    Hier noch einmal der Code für den logEintrag:


    Der Datenbank Eintrag wird erstellt, der logEintrag allerdings nicht.

    Erst wenn ich die Seite selber in meinem Browser Lade, funktioniert das.


    Hat jemand eine Idee? Fehler werden nicht angezeigt und in der Konsole ebenfalls nicht.



    LG

    Marvin

  • Hab die Pfade jetzt angepasst. Allerdings schreibt er noch immer nicht in die Datei. Hab geguckt das Ordner und Datei die jeweiligen Rechte haben. Das haben die auch.


    Hab den Pfad jetzt so angepasst:



    Keiner mehr eine Idee? ..,

  • Blöder Tipp von der Seite, Finger weg von file handles wenn man sie nicht braucht.
    Nutz doch einfach https://www.php.net/manual/de/function.file-put-contents.php


    hier mal ein Beispiel

    Was anders ist als in deinem Code / was es daraus zu lernen gibt

    1. Der Pfad der Log Datei wird nicht immer von außen mitgegeben, wenn der sich ändern muss, würde ich das z.B. von $type abhängig machen
    2. Der Pfad ist absolut, nutzt aber das aktuelle Verzeichniss als Basis
    3. Es wird file_put_contents statt filehandles genutzt
    4. Das mit dem Zeitstempel ist so einfacher, date_default_timezone_set solltest du oben in deiner index.php aufrufen (bei error_reporting)
    5. Es wird ein Fehler geworfen wenn etwas nicht geklappt hat

    ----


    Sollte es nicht funktionieren pack mal die folgenden Sachen vor Zeile 8:

    Code
    1. $path = __DIR__ . DIRECTORY_SEPARATOR . 'application.log';
    2. var_dump([
    3. 'path' => $path,
    4. 'file_exists' => file_exists($path),
    5. 'is_writable' => is_writable($path),
    6. 'is_dir' => is_dir($path),
    7. 'is_file' => is_file($path),
    8. ]);