PHP Erstellen und speichern Sie eine txt-Datei im Stammverzeichnis

73

Ich versuche, eine Datei zu erstellen und im Stammverzeichnis meiner Site zu speichern, aber ich weiß nicht, wo die Datei erstellt wird, da ich keine sehen kann. Und wenn möglich, muss die Datei jedes Mal überschrieben werden.

Hier ist mein Code:

$content = "some text here";
$fp = fopen("myText.txt","wb");
fwrite($fp,$content);
fclose($fp);

Wie kann ich festlegen, dass es im Stammverzeichnis gespeichert wird?

Satch3000
quelle
Das sieht für mich richtig aus. Solange sich das Skript in Ihrem Webstamm befindet, sollte es in Ordnung sein. Das einzige, was es aufhalten würde, sind Ihre Berechtigungen.
Seanbreeden
1
Wenn Sie die Erlaubnis haben, versuchen Sie es$fp = fopen("/myText.txt","wb");
Vinayak Garg
Abgesehen davon, dass es sich um eine schlechte Idee handelt und scheinbar hackig ist, müssen Sie nur den vollständigen Pfad angeben und über ausreichende Berechtigungen verfügen.
Mikhail
7
Das Einstellen von 777 in Ihrem Webstamm ist eine schrecklich schlechte Idee.
Seanbreeden

Antworten:

136

Die Datei wird im selben Verzeichnis wie Ihr Skript erstellt. Versuchen Sie dies stattdessen.

$content = "some text here";
$fp = fopen($_SERVER['DOCUMENT_ROOT'] . "/myText.txt","wb");
fwrite($fp,$content);
fclose($fp);
Vigrond
quelle
6
Nur ein Hinweis: Dies erfordert eine Schreibberechtigung für das Verzeichnis, in das Sie schreiben.
Mboy
Ich kann keinen Inhalt in diese Datei schreiben. Wie kann ich es tun?
Huykon225
15

Wenn Sie PHP unter Apache ausführen, können Sie die aufgerufene Umgebungsvariable verwenden DOCUMENT_ROOT. Dies bedeutet, dass der Pfad dynamisch ist und zwischen Servern verschoben werden kann, ohne mit dem Code herumzuspielen.

<?php
  $fileLocation = getenv("DOCUMENT_ROOT") . "/myfile.txt";
  $file = fopen($fileLocation,"w");
  $content = "Your text here";
  fwrite($file,$content);
  fclose($file);
?>
cb1
quelle
0

fopen()öffnet eine Ressource im selben Verzeichnis wie die Datei, die den Befehl ausführt. Mit anderen Worten, wenn Sie nur die Datei ~ / test.php ausführen, erstellt Ihr Skript ~ / myText.txt.

Dies kann etwas verwirrend sein, wenn Sie eine URL-Umschreibung verwenden (z. B. in einem MVC-Framework), da die neue Datei wahrscheinlich in dem Verzeichnis erstellt wird, in dem sich die Datei root index.php befindet.

Außerdem müssen Sie die richtigen Berechtigungen festgelegt haben und möchten diese möglicherweise testen, bevor Sie in die Datei schreiben. Folgendes würde Ihnen beim Debuggen helfen:

$fp = fopen("myText.txt","wb");
if( $fp == false ){
    //do debugging or logging here
}else{
    fwrite($fp,$content);
    fclose($fp);
}
Farray
quelle