Ankündigung

Einklappen
Keine Ankündigung bisher.

Datei durch Funktion erstellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datei durch Funktion erstellen

    Liebes PHP-Forum,

    ich hab mal wieder eine Frage, die wohl für euch relativ leicht zu beantworten ist, ich mich jedoch seit gut 20 Minuten abquäle und auch Google nicht sonderlich viel Informationen bezüglich dessen hergibt.

    Meine Datei läuft auf'm XAMPP und bindet einfach nur eine andere Datei ein, diese Datei soll, wenn noch nicht vorhanden, eine Datei erstellen.

    Kommentare wurden zur Minimalisierung des Codes entfernt, ist ja jetzt auch nicht eine große Menge an Code so dass es an diesem Punkt noch notwendig wäre.

    index.php
    PHP-Code:
        error_reporting(E_ALL);
        require_once(
    "inc/funcs.php");
        
        echo 
    logAction(basename(__FILE__) . " aufgerufen"); 
    funcs.php
    PHP-Code:
        error_reporting(E_ALL);
        function 
    logAction($action) {
            
    $timestamp    =    time();
            
    $ip            =    $_SERVER['REMOTE_ADDR'];
            
    $logText    =    date("d.m.Y H:i:s"$timestamp) . " - " $ip " | " $action;
            
    $logPath    =    "/logs/";
            
    $logFile    =    date("Ymd"$timestamp);
            
            
            
    $file    =    fopen($logPath $logFile"a");
            
    fwrite($file$logText);
            
    fclose($file);
        } 
    Fehlermeldung
    Code:
    Warning: fopen(/logs/20140924): failed to open stream: No such file or directory in C:\xampp\htdocs\us\inc\funcs.php on line 11
    
    Warning: fwrite() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\us\inc\funcs.php on line 12
    
    Warning: fclose() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\us\inc\funcs.php on line 13
    Alles schön und gut, dass keine Datei gefunden wurde, logisch - ist ja auch keine da, PHP sollte sie ja auch erstellen.

    Liegt das daran dass in einer Funktion keine Dateien erstellt werden können? Das wäre jedoch Blödsinn.

    Bitte um Schubser in die richtige Richtung,
    lg,
    Rier

  • #2
    http://de1.php.net/manual/de/function.fopen.php
    http://de1.php.net/manual/de/function.file-exists.php
    Zitat von derwunner
    "Ein FISI ist auf gut-deutsch der Netzwerker. Das heißt Du gehst rauß zum Kunden oder auf die Straße und verlegst Leitungen" - derwunner 2015

    Kommentar


    • #3
      fopen(/logs/20140924)
      Existiert denn der Ordner "logs" auch? Der wird nämlich nicht automatisch mit erstellt...

      Ausserdem mal prüfen, wohin "/logs/" überhaupt aufgelöst wird => realpath('/logs/20140924')
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Danke für die Links, kenne beide Funktionen habe aber bewusst auf file_exists verzichtet, weil mit dem a-Modus die Datei ja normalerweise erstellt werden sollte.

        Zitat von lstegelitz Beitrag anzeigen
        Existiert denn der Ordner "logs" auch? Der wird nämlich nicht automatisch mit erstellt...

        Ausserdem mal prüfen, wohin "/logs/" überhaupt aufgelöst wird => realpath('/logs/20140924')
        classes/
        inc/
        logs/
        template/
        index.php
        Das ist die Struktur, funcs liegt in inc/ und die jeweilige Logdatei in /logs/ - nona.

        Auf den Fehler bin ich durch realpath gekommen, die Pfadangabe funktioniert nicht mit /VERZEICHNIS/ sondern mit VERZEICHNIS/, sprich ohne dem ersten Slash. Banal, dennoch Danke!

        Kommentar


        • #5
          Zitat von Rier Beitrag anzeigen
          Danke für die Links, kenne beide Funktionen habe aber bewusst auf file_exists verzichtet, weil mit dem a-Modus die Datei ja normalerweise erstellt werden sollte.





          Das ist die Struktur, funcs liegt in inc/ und die jeweilige Logdatei in /logs/ - nona.

          Auf den Fehler bin ich durch realpath gekommen, die Pfadangabe funktioniert nicht mit /VERZEICHNIS/ sondern mit VERZEICHNIS/, sprich ohne dem ersten Slash. Banal, dennoch Danke!
          Na ja, bei der Angabe vom Verzeichnis solltest du besser __DIR__ verwenden.
          Zu deinem Problem (versuche Dir legendlich zu helfen, ich habe mich nie mit Ordnern in PHP beschäftigt.)

          Aber wie es aussieht, versuchst du eine Datei zu öffnen, die gar nicht existiert.
          Mach mal einen var_dump() auf $file, und poste dann die Ausgabe die du bekommst.
          MfG.

          ================================
          EDIT - Kann es sein, dass Du kein nicht den Typ der File mit gibst (.php, .txt, .html & co.)?
          Dir gefällt mein Beitrag, ich habe Dir geholfen?
          Bewerte mich doch einfach!

          Kommentar


          • #6
            Zitat von Rier Beitrag anzeigen
            Auf den Fehler bin ich durch realpath gekommen, die Pfadangabe funktioniert nicht mit /VERZEICHNIS/ sondern mit VERZEICHNIS/, sprich ohne dem ersten Slash. Banal, dennoch Danke!
            Das ist eben Konvention unter unix-ähnlichen Betriebssystemen. Der erste / stellt dabei nämlich nicht den Directory Seperator dar, sondern das Root-Verzeichnis "/".

            Kommentar

            Lädt...
            X