Wie schreibe ich in eine Datei in PHP?


107

Ich habe dieses Skript auf einem kostenlosen PHP-unterstützenden Server:

<html>
<body>

<?php
$file = fopen("lidn.txt","a");


fclose($file);
?>

</body>
</html>

Es erstellt die Datei lidn.txt, ist aber leer.

Wie kann ich eine Datei erstellen und etwas hineinschreiben, zum Beispiel die Zeile "Katzen jagen Mäuse"?

Antworten:


153

Sie können eine übergeordnete Funktion wie die folgende verwenden:

file_put_contents($filename, $content);

das ist identisch mit Aufruf fopen(), fwrite()und fclose()nacheinander zu Schreibdaten in eine Datei.

Dokumente : file_put_contents


3
Nur eine Nebenbemerkung, file_put_contents()funktioniert nur in PHP5. Scheint in diesem Fall kein Problem zu sein (Ihre Antwort wurde schließlich akzeptiert), aber es gibt möglicherweise noch einige Hosts, auf denen PHP4.x ausgeführt wird.
Duroth

2
Eine sehr wichtige Nebenbemerkung: file_put_contents () ist im Vergleich zu fopen () ein Speicher-Albtraum. Ich benutze es gerne, aber wenn Sie mit großen Dateien umgehen, möchten Sie in der Lage sein, Daten darin zu "streamen". PHP benötigt ein großes Vielfaches der endgültigen Dateigröße als internen Speicher. Denken Sie also daran, wenn Sie diese Funktion verwenden. Für kleinere Datenmengen würde ich es empfehlen, da es einfach zu verwenden ist.
John

1
Verwenden Sie dann file_put_contents ($ filename, $ other_stream). Es ist dasselbe wie die Verwendung von stream_copy_to_stream-), was sehr speichereffizient ist.
Savageman

@ Duroth funktioniert es nur in PHP5 oder es funktioniert nur in PHP5? Das sind 2 verschiedene Dinge.
Xsmael

2
@Xsmael Nicht in der fernen Vergangenheit von 2009;) PHP7 gab es damals noch nicht. Aber ja, put_file_contents()wurde zuerst in PHP5 eingeführt und ist seitdem auch in späteren Versionen enthalten.
Duroth

88

Betrachten Sie fwrite () :

<?php
$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);
?>

Sie können den obigen Code auch verwenden. Sie können auch file_put_contents verwenden, um Details zum Lesen und Schreiben von Dateien zu erhalten. Weitere Informationen finden
Ankur Kumar Singh

@sathish nach dem Schreiben in die Datei wie oben, wie wir die Datei lesen, ohne die Datei ( fclose($fp) ) zu schließen, versuchte ich mit $fp = fopen('lidn.txt', 'w+');, $fp = fopen('lidn.txt', 'a+');aber keiner von ihnen funktionierte
Kasun Siyambalapitiya


10
$text = "Cats chase mice";
$filename = "somefile.txt";
$fh = fopen($filename, "a");
fwrite($fh, $text);
fclose($fh);

Sie nutzen fwrite()


Nachdem ich wie oben beschrieben in die Datei geschrieben hatte, wie wir die Datei lesen können, ohne die Datei zu schließen ( fclose($fh)), versuchte ich es mit $fh = fopen('lidn.txt', 'w+');: $ fh = fopen ('lidn.txt', 'a +'); `aber keiner von ihnen hat funktioniert
Kasun Siyambalapitiya

10

Es ist einfach, eine Datei zu schreiben:

$fp = fopen('lidn.txt', 'w');
fwrite($fp, 'Cats chase mice');
fclose($fp);

6

Ich verwende den folgenden Code, um Dateien in mein Webverzeichnis zu schreiben.

write_file.html

<form action="file.php"method="post">
<textarea name="code">Code goes here</textarea>
<input type="submit"value="submit">
</form>

write_file.php

<?php
// strip slashes before putting the form data into target file
$cd = stripslashes($_POST['code']);

// Show the msg, if the code string is empty
if (empty($cd))
    echo "Nothing to write";

// if the code string is not empty then open the target file and put form data in it
else
{
    $file = fopen("demo.php", "w");
    echo fwrite($file, $cd);

    // show a success msg 
    echo "data successfully entered";
    fclose($file);
}
?>

Dies ist ein funktionierendes Skript. Stellen Sie sicher, dass Sie die URL in der Formularaktion und die Zieldatei in der Funktion fopen () ändern, wenn Sie sie auf Ihrer Site verwenden möchten.

Viel Glück.


1
Ich habe gerade angefangen, PHP zu schreiben, aber es sieht so aus, als würden Sie nicht nur eine Textdatei schreiben, sondern Sie schreiben eine PHP-Codedatei auf Ihren Server, die unmittelbar danach ausgeführt werden kann, indem Sie auf die URL "demo.php" verweisen. Jemand könnte bösartigen PHP-Code auf Ihren Server schreiben und ihn sofort ausführen, oder? Ich gehe davon aus, dass Sie auf diese Weise Ihre eigenen Codes testen können, aber die Leute sollten vor den Risiken dieser speziellen Implementierung gewarnt werden. (
Davon abgesehen

6

Um in eine Datei zu schreiben, PHPmüssen Sie die folgenden Schritte ausführen :

  1. Öffne die Datei

  2. Schreiben Sie in die Datei

  3. Schließen Sie die Datei

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "a");
    fwrite($file  , $select->__toString());
         fclose($file );

6

Hier sind die Schritte:

  1. Öffne die Datei
  2. Schreiben Sie in die Datei
  3. Schließen Sie die Datei

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
    fwrite($file, $select->__toString());
    fclose($file);

5

fwrite()ist ein bisschen schneller und file_put_contents()ist sowieso nur ein Wrapper um diese drei Methoden, so dass Sie den Overhead verlieren würden. Artikel

file_put_contents (Datei, Daten, Modus, Kontext):

Der file_put_contentsschreibt eine Zeichenfolge in eine Datei.

Diese Funktion folgt diesen Regeln beim Zugriff auf eine Datei. Wenn FILE_USE_INCLUDE_PATH festgelegt ist, überprüfen Sie den Einschlusspfad für eine Kopie des Dateinamens. Erstellen Sie die Datei, falls sie nicht vorhanden ist. Öffnen Sie die Datei und sperren Sie die Datei, wenn LOCK_EX festgelegt ist und wenn FILE_APPEND festgelegt ist. Bewegen Sie sich zum Ende der Datei. Andernfalls löschen Sie den Dateiinhalt. Schreiben Sie die Daten in die Datei, schließen Sie die Datei und lösen Sie alle Sperren. Diese Funktion gibt die Nummer des Zeichens zurück, das bei Erfolg in die Datei geschrieben wurde, oder FALSE bei einem Fehler.

fwrite (Datei, Zeichenfolge, Länge):

Das fwriteSchreiben in eine geöffnete Datei. Die Funktion stoppt am Ende der Datei oder bei Erreichen der angegebenen Länge, je nachdem, was zuerst eintritt. Diese Funktion gibt die Anzahl der geschriebenen Bytes oder FALSE bei einem Fehler zurück.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.