fopen: Datei kann nicht ein 2. mal geöffnet werden?!
Chris Ross
- php
0 dedlfix
Hallo Forum,
ich habe hier eine Testumgebung für ein Intranet unter WinXP-Pro mit Xampp (Apache 2+ und PHP 5.+).
Wenn ich per Script:
function speicher_fehler($meld) {
$fehlerdatei = "includes/fehlerspeicher.log";
if(!is_writable($fehlerdatei)) {
if(!$fp = fopen($fehlerdatei, "ab")) {
$this->error_handler(array('LEVEL' => 1, "<b>Das Öffnen der Fehlerdatei war nicht möglich!</b>", "0002", 99));
}
if(!fputs($fp, date("d.m.Y, H:i", time())." Uhr: ".$meld)) {
$this->error_handler(array('LEVEL' => 1, "<b>Das Schreiben der Fehlermeldung war nicht möglich!</b>", "0003", 98));
}
fclose($fp);
return;
}
else {
$this->error_handler(array('LEVEL' => 1, "<b>Das Schreiben der Fehlerdatei ist fehlgeschlagen!</b>", "0001", 97));
}
}
die Datei fehlerspeicher.log anlege und das 1. mal mit einem Fehler beschreibe, so klappt das wunderbar. Allerdings lässt sich fehlerspeicher.log bei einem 2. Aufruf nicht mehr öffnen, d.h. is_writable liefert false.
Wenn ich fehlerspeicher.log im Verzeichnis lösche, wird wieder ein neues fehlerspeicher.log angelegt, sobald die function ausgeführt wird - also im Prinzip funktioniert das. Besteht jedoch schon eine Datei, kann plötzlich nicht mehr drauf zugeriffen werden?!
Ich habe die Rechte der Angelegten Datei auf "Vollzugriff" eingestellt und die Pfade auf absolut, sowie die Windows-Syntax (C:\Programme\usw) verwendet, aber das alles bringt leider nichts.
Hat jemand von Euch schonmal ein ähnliches Problem gehabt, oder kann mir sonstwie auf die Sprünge helfen?
Für den ein oder anderen Tipp wäre ich sehr dankbar.
MfG
Chris
echo $begrüßung;
Du hast einen Fehler in deiner Programmlogik.
$fehlerdatei = "includes/fehlerspeicher.log";
if(!is_writable($fehlerdatei)) {
if(!$fp = fopen($fehlerdatei, "ab")) {
Beim ersten Aufruf ist die Datei nicht da, also auch nicht beschreibbar. !is_writable() ergibt true.
Beim zweiten Aufruf ist die Datei vorhanden und auch beschreibbar. !is_writable() ergibt damit false.
echo "$verabschiedung $name";
echo $begrüßung;
Du hast einen Fehler in deiner Programmlogik.
Genau das war's :))
Manchmal sieht man den Wald vor lauter Bäumen nicht mehr.
Danke vielmals :))
MfG
Chris