Tom: GELÖST: Datei upload bringt 500er

Beitrag lesen

Hello,

Musste den upload_tmp_dir in der php.ini auf einen Ordner legen, auf dem Schreibrechte für den Benutzer vorhanden sind. Der Standard Ordner (welcher das auch immer ist) hat wohl keine gehabt.

Oh jemineh!

Hast Du Zugriff zur Server- bzw. Virt-Host-Konfiguration?

Das upload\_tmp\_dir sollte unbedingt AUSSERHALB der Document Root liegen.
Mittels open\_basedir kann man dem Account darauf Zugriff gewähren (PHP als Modul).

Bei CGI- oder FastCGI-Einrichtung muss dies über das Rechtesystem geschehen.

Wichtig ist aber, das kein anderer Account ('Domain') auf diese Verzeichnisse Zugriff hat.

Der Code

  
#### falsch ####  
  
if ($_FILES["file"]["error"] > 0)  
{  
    echo "Error: " . $_FILES["file"]["error"] . "<br>";  
}  
else  
{  
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";  
}  
  

ist so nicht in Ordnung.

Bei einem Single-File-Upload könnte es heißen:

  
#### besser ####  
  
if ($_FILES["file"]["error"] === 0)  
{  
    echo "<p>Upload: " . htmlspecialchars($_FILES["file"]["name"]) . "</p>";  
}  
else  
{  
    echo "<p>Error: " . htmlspecialchars($_FILES["file"]["error"]) . "</p>";  
}  
  

Das ist darin begründet, dass bei einem Multi-File-Upload ein Array in ["error"] steht.

  
$_FILES["file"]["error"][$n]  
  

Lies Dir bitte den angefangenen Artikel im Wiki zum File-Upload durch:

http://wiki.selfhtml.org/wiki/Artikel:PHP/File_Upload

Da findest Du noch etliche Fallstricke zum Thema!

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bikers-lodge.com