ich bin an einem PHP-Script, welches mit file_put_contents() einen Text in eine Datei schreiben soll.
Die Datei heist: test.test.txt. Leider funktioniert das irgendwie nicht.
Ich habe es jetzt mal mit einer anderen Datei probiert die nur test.txt heißt, und da funktioniert es auf einmal.
Kann das daran liegen das meine Datei zwei punkte im Name hat? Und wie kann das gemacht werden?
Tja, da wird versucht, eine Datei mit dem Namen $dat zu erstellen, weil Variablen zwischen ’ nicht geparst werden. Ich weiß sowieso nicht, was die da sollen.
Das dürfte auch nicht an den Punkten liegen, denn egal ob Raspberry, Notebook oder PC, solange das OS ein Unix-Derivat ist, funktionieren Punkte in Dateinamen!
Was genau funktioniert denn an dem nicht:
[PHP]$toprivat = $_POST[‚…‘]; //(=user.admin)
$dat = $toprivat . ‚.txt‘;
$fullmess = ‚(‘ . $time . ‚)‘ . ’ ’ . $abs . ': ’ . $mess . ‚ ‘;
file_put_contents( $dat, $fullmess, FILE_APPEND);
[/PHP] ( was auch immer ein in einer .txt Datei verloren hat )
Vielleicht scheitert es an den Zugriffsrechten?
Ich würde mal in dem Script das ErrorReporting einschalten, vielleicht kommt ja ein Hinweis auf die Fehlerquelle:
[PHP]error_reporting ( -1 );
ini_set ( ‚display_errors‘, true );[/PHP]
Hallo,
Danke für die Antwort. An den Rechten liegt es sicher nicht, da in eine andere Datei ohne Probleme geschrieben wird.
Ich dachte auch schon, da die Datei nach einem via .htaccess eingeloggten Nutzer benannt wird, das die Punkte möglicherweise als Sonderzeichen ausgegeben werden.
Das sorgt bei Ausgabe der Datei für einen Zeilemumbruch.
Das sorgt bei Ausgabe der Datei für einen Zeilemumbruch.
Das ist schon klar, aber das macht man wie gesagt nicht in der Datei, sondern bei der Ausgabe bspw.:
[PHP]$aFileLines = file( $dat, FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES );
echo implode( ‚ ‘, $aFileLines );[/PHP]Einen Grund dafür hat scbawik gerade genannt.
Btw. hast Du denn den ErrorReport getestet oder gehst Du davon aus, dass nicht nötig ist, weil Du weißt, woran es nicht liegen kann?!
Warning: file_put_contents(Private/test.test): failed to open stream: Permission denied in /var/www/html/index.php on line 41
Warning: file_put_contents(Private/test.test): failed to open stream: Permission denied in /var/www/html/index.php on line 42
[B]
Die Rechte der Index.php, welche die Datei erstellen soll liegen bei 777
Die Rechte des Ordners, in welchen die Dateien getan werden sollen liegen bei 771
Wessen Berechtigung? Des Ordners oder der PHP-Datei oder der TXT?
Die die Berechtigung des Ordners müssen ja passen, da eine datei ja ohne probleme bearbeitet werden kann.
Wenn ich mit ls -l in den Ordner schaue, kommt folgendes:
pi@raspberrypi:/var/www/html $ ls -l Private/
insgesamt 4
-rw-r–r-- 1 www-data www-data 0 Sep 9 14:04 leif.kotsch (bei dieser Datei funktioniert es)
-rw-r–r-- 1 root root 8 Sep 8 19:39 test.user (bei dieser nicht)