Dateiupload geht nicht!

Hallo,
habe folgende html und php Datei erstellt, sie sollen es ermöglichen kleine Bilder auf einen Server hochzuladen.
upload.html:


<html>
<body>
<form enctype="multipart/form-data" action="upload.php" method="post">
Datei: <input name="upfile" type="file" size="25">
<p> <input type="submit" value="upload...">
</form>
</body>
</html>

upload.php:


<?php
	echo "Zur Kontrolle:<p>";
	echo "Original-Dateiname: ". $_FILES["upfile"]["name"]. "<br>";
	echo "Dateigroesse: ". $_FILES["upfile"]["size"]. "<br>";
	echo "Dateityp: ". $_FILES["upfile"]["type"]. "<br>";
	

	
	$dname = explode(".",$_FILES["upfile"]["name"]);
	$dnamesize = count($dname);
	$upfile_ext = $dname[$dnamesize-1];
	echo "Dateinamen-Erweiterung: ". $upfile_ext . "<p>";
	
	echo "Temporärer Dateiname: " . $_FILES["upfile"]["tmp_name"]. "<p>";
	
	if($_FILES["upfile"]["size"]>0 && $upfile_ext=="gif")
	{
		copy($_FILES["upfile"]["tmp_name"],"upload.gif");
		echo "Datei wurde kopiert<p>";
		echo "<img src='upload.gif'>";
		}
	else
	{
		echo "Kopier-Fehler: Datei nicht vorhanden";
		}
?>

Wenn ich dann aber ein Bild hochlade kommt folgende Fehlermeldung:
Warning: copy(upload.gif) [function.copy]: failed to open stream: Permission denied in /var/www/vhosts/acip.biz/httpdocs/private/upload/upload.php on line 18
Datei wurde kopiert

Was mache ich falsch? Habe mit chmod auch schon schreib-/leserechte vergeben!

Das “Permission Denied” muss nicht unbedingt heissen, dass du keine Rechte auf den ORDNER hast, sondern dass du allgemein keine Rechte hast, Dateien aus dem Tmp-Ordner zu kompieren.
Ist /tmp sticky? Ist der Safe-Mode von PHP aus? Hat der apache auch wirklich seinen eigenen Username und nicht “nouser” als user? Isti n der PHP.ini auch fileupload entsprechend konfiguriert?

Jetzt habe ich das ganze noch mit Plesk freigegeben, jetzt gehts!!
Aber nun hätte ich noch eine Frage, in meinem php wird ja der Dateiname mit “upload.gif” immer fest gewählt:
copy($_FILES[“upfile”][“tmp_name”],“upload.gif”);

Ich hätte jetzt lieber den ursprünglichen Dateinamen behalten, hätte es so probiert:

$mname = $_FILES[“upfile”][“name”];
copy($_FILES[“upfile”][“tmp_name”],$mname);

Das funktioniert aber leider nicht! Wo liegt mein Fehler?

Also generell sollte man eher move_uploaded_file() statt copy() benutzen, was Dateiuploads angeht.#
Eigentlich sieht es aber wirklich eher so aus, als wenn für den Ordner keine Schreibrechte vorhanden wären.

copy() kopiert nur files die bereits am server sind… move_uploaded_file() ladet sie erst hoch

PS: echo sollte immer erst am ende benutzt werden (kann fehler mit zB header() verursachen)

Nein. http://de3.php.net/move_uploaded_file
(Wie soll der Server auch Dateien zu sich selbst hochladen, irgendwie merkwürdig.)

ich weiss was move_uploaded_file() macht…

geht es hier nich darum dateien vom lokalen rechner auf nen server hochzuladen?

Komisch. Erst hast du doch irgendwas davon erzählt, dass move_uploaded_files() Dateien hochlädt.

geht es hier nich darum dateien vom lokalen rechner auf nen server hochzuladen?

Wenn ich mich nicht irre ist genau das der Fall.

Jo dann benutzt move_uploaded_file zum hochladen von dateien von client auf server.