Problem beim Löschen / Schreiben einer Datei

Moritz123

Erfahrenes Mitglied
Hallo!

ich habe ein Script, dass Text in eine (bestehende) XML-Datei schreibt (bzw schreiben soll).
Dazu gehe ich wie folgt vor:
- xml-Datei öffnen
- erzeuge mit file() einen Array
- speichere die erste Zeile in eine Variable udn lösche sie aus dem Array
- setze den Restarray mit implode() wieder zusammen
- lösche die xml-Datei vom Server
- erzeuge sie neu mit fopen($datei, w+) und fwrite()

functions.php:
PHP:
function updatexml($datei,$pass,$passthrough)
{
	chmod($datei,"777");
	$dateilader = file($datei);				
	$anzahl_zeilen = count($dateilader);
	//echo $anzahl_zeilen;
	$addText = "<link>\n<naam>" . $_POST['tickertext'] . "</naam>\n<url>" . $_POST['tickerlink'] . "</url>\n</link>";
	//$addText = "<link>\n<naam>test1</naam>\n<url>http://test/work/</url>\n</link>";
	if($anzahl_zeilen != 0)
	{
		$ersteZeilen = $dateilader[0] . $dateilader[1];
		//echo $ersteZeilen;
		unset($dateilader[0]);
		unset($dateilader[1]);
		$restDatei = implode("",$dateilader);
		//echo $restDatei;
		delete($datei);
		$neueDatei = $ersteZeilen;
		$neueDatei .= $addText;
		$neueDatei .= $restDatei;
	}
	else
	{
		$neueDatei = '<?xml version="1.0" encoding="iso-8859-1" ?>
		<dataveld>
		';
		$neueDatei .= $addText;
		$neueDatei .= '
		</dataveld>';
	}
	$fp = fopen($datei,"w+");
	if((fwrite($fp,$neueDatei)) && ($pass == $passthrough)) $status = "<h3><font color=green>" . $datei . " erfolgreich geschrieben.</font></h3><h5>Folgender Text wurde ergänzt:<br><pre>" . $addText . "</pre><a href=editnews.php?preview>Flash-Vorschau</a></h5>";
	else $status = "<h3><font color=red>" . $datei . " nicht erfolgreich geschrieben!</font></h3><h5>- Bitte prüfen Sie die Datei auf Existenz und Zugriffsberechtigungen!<br>- Haben Sie das richtige Passwort eingegeben?</h5>";
	fclose($fp);
 	echo $status;
}

Nun erhalte ich beim Erzeugen folgende Fehler:
Code:
Warning: chmod() [function.chmod]: Operation not permitted in /www/htdocs/dprojekt/emogress.de/ticker/functions.php on line 4

Warning: unlink(tickerurls.xml) [function.unlink]: Permission denied in /www/htdocs/dprojekt/emogress.de/ticker/functions.php on line 18

Warning: fopen(tickerurls.xml) [function.fopen]: failed to create stream: Permission denied in /www/htdocs/dprojekt/emogress.de/ticker/functions.php on line 32

Warning: fwrite(): supplied argument is not a valid stream resource in /www/htdocs/dprojekt/emogress.de/ticker/functions.php on line 33

Warning: fclose(): supplied argument is not a valid stream resource in /www/htdocs/dprojekt/emogress.de/ticker/functions.php on line 35
und dass obwohl ich die Datei chmod777 habe.

Wo liegt da mein Fehler?
Gibt es eine Möglichkeit nur den Inhalt einer Datei zu löschen? Dann bräuchte ich Sie nicht immer physisch neu anzulegen.

Vielen Dank!
 
Zuletzt bearbeitet:
Bist Du sicher, dass Du chmod 777 hast?
Wenn ich mir Deine Fehlermeldungen anschauen, wage ich das daran zu zweifeln.
Da steht doch eindeutig "Warning: chmod() [function.chmod]: Operation not permitted".
Die funktion chmod() wird also nicht unterstützt!
Und somit erhältst Du die anderen Fehlermeldungen "Permission denied", also Zugriff verweigert!
Ich vermute, dass Du mit dem User, mit dem Du das Script ausführst, keine Berechtigungen hast irgendetwas auf dem Server zu ändern.
Vielleicht gestattet Dein Hoster nicht, dass Änderungen über das Netz vorgenommen werden können, um irgendwelche Angriffe oder die Installatin von fremden, unerwünschten Programmen zu verhindert (Dialer, Spam-Tools, ...).

redlama
 
Zurück