Ankündigung

Einklappen
Keine Ankündigung bisher.

Wohin speichert "file_put_contents"

Einklappen

Neue Werbung 2019

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

  • Wohin speichert "file_put_contents"

    Hallo Forumgemeinde!

    Ich bin grad dabei PHP zu lernen und habe bei einer kleinen Übung ein Problem, welches ich noch nicht lösen konnte.

    Ich möchte eine Datei mit file_put_contents schreiben. Wenn ich das lokal mit Xampp mache, dann funktioniert das wunderbar und die Datei wird in das htdocs-Verzeichnis geschrieben. Wenn ich die php-Datei dann auf meinen Webserver lege und dort starte, wird keine Datei erzeugt. Woran kann das liegen?

    Vielen Dank!

    Peter

  • #2
    ..und welche Parameter gibst du file_put_contents mit? Zeig mal dein PHP-Code dazu.

    Kommentar


    • #3
      Zitat von PetJor Beitrag anzeigen
      Woran kann das liegen?
      Üblicherweise fehlende Schreibrechte.

      Kommentar


      • #4
        -> error_reporting hochdrehen und Rückgabewert auch anschauen.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Auch mal den Pfad mit __FILE__ prüfen, damit du überhaupt weisst wo du bist und wo du hinwillst.
          [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

          Kommentar


          • #6
            Zitat von PetJor Beitrag anzeigen
            ... habe bei einer kleinen Übung ein Problem, ...
            Zitat von jspit
            Zeig mal dein PHP-Code dazu.
            Ohne den geht gar nichts und wir betreiben hier Kaffeesatzleserei.


            Kommentar


            • #7
              Vielen Dank schon mal für eure Antworten!

              Hier der Code meiner kleinen Übung:

              PHP-Code:
              <!DOCTYPE html>

              <style>
                p, h1, h3, form {
                  font-family: arial;
                }
                fieldset {
                  border: none;
                }
                .fett {
                  font-weight: bolder;
                  font-style: italic;
                }
              </style>

              <h1>Exportiert eine Textdatei mit Inhalt</h1>


              <form action="Textdatei exportieren.php" method="post">  
               Bitte geben Sie einen Dateinamen ein (ohne Dateiendung):<br/>
                <input type="text" name="dateiname"/><br/><br/>

               Bitte wählen Sie die gewünschte Dateiendung aus:
              <!--    <form action="Textdatei exportieren.php" method="post">-->
                    <fieldset>
                      <input type="radio" id="txt" name="dateiendung" value=".txt">
                      <label for="txt"> .txt-Datei</label> <br/>
                      <input type="radio" id="csv" name="dateiendung" value=".csv">
                       <label for="csv"> .csv-Datei</label> <br/>        
                      <input type="radio" id="doc" name="dateiendung" value=".doc">
                      <label for="doc"> .doc-Datei</label> <br/>
                    </fieldset>
              <!--    </form>-->

               Bitte geben Sie den Textinhalt der Datei an:<br/>
                <textarea rows="4" cols="50" name="text"></textarea><br/><br/>
                <input type="submit" name="absenden" value="Datei erstellen"/>
              </form>


              <?php
                $name 
              $_POST['dateiname'];
                
              $endung $_POST['dateiendung'];
                
              $namekomplett $name.$endung;
                
              $inhalt $_POST['text'];

                
              file_put_contents($namekomplett$inhalt);

                if (
              $name || "") {
                echo 
              "<p>Die Datei:<span class='fett'> $namekomplett </span> wurde erfolgreich erstellt!</p>";
                };
              ?>

              Kommentar


              • #8
                Du solltest nicht den Dateinamen aus einem Formular verwenden. So können Fehler passieren oder jemand könnte es missbrauchen um Schadsoftware einzuschleusen. Am besten du vergibst einen generierten Dateinamen (Zufallszahl, Datenbank-ID, etc.) und speichert den Dateinamen separat ab.

                Aber da es eine Übung sein soll, ist das hier wohl nicht so wichtig. Aber nur als Warnung, dass sowas nicht produktiv eingesetzt werden sollte.

                Kommentar


                • #9
                  Ähem
                  <form action="Textdatei exportieren.php"
                  Augenmerk auf Wert in action, somit auf Leerzeichen und Gross- und Kleinschreibung. Windows macht da was anders als Unix-Derivate.

                  Dateien sollten am besten nur Kleinbuchstaben enthalten sowie Ziffern und maximal einen Unterstrich um Probleme wie deine zu vermeiden.

                  Zudem solltest du hier
                  $name = $_POST['dateiname'];

                  prüfen ob das oben gesagt auch zutrifft, also validieren, ansonsten hast du wieder Probleme, wenn jemand seine Datei %?#_meine Supi dupi Datei nennt.
                  EDIT: hier hat hellbringer schon einen guten Ansatz gebracht.

                  Du solltest auch fit in HTML sein, wenn du mit PHP umgehen willst. ich vermisse da das Label-Element, zuviel br und unnötige Fehler wie diese
                  HTML-Code:
                  </style>
                  
                  <h1>
                  Da fehlt das head und body Element, sowie die Angabe von Zeichensatz und title.
                  Man kann sich in einem PHP Forum auf das Nötigste beschränken und CSS und HTML weglassen wenn es nicht der Lösung dienlich ist, bei dir scheint das aber unwissentlich geschehen zu sein.

                  Verwende den Validator um dein erzeugtes Markup zu validieren.

                  Kommentar

                  Lädt...
                  X