Steffi: File upload - funktioniert, allerdings kann Browser nicht lesen

Beitrag lesen

Hallo,

zugegeben bin ich PHP-Anfänger, fällt mir aber nicht schwer, da ich beruflich ASP-Profi bin. Dennoch gibt es manche Hürde auf Apache Servern für mich, die es mit dem IIS nicht gibt (bzw. anderweitig komplizierter ist ;-)

Mein aktuelles Problem:
Ich habe mir eine Funktion für einen File-Upload geschrieben. Diese funktioniert soweit perfekt, sprich die hochgeladene Datei liegt dann genau dort, wo ich sie haben möchte.

ALLERDINGS: Wenn ich per Browser diese Datei (z.B. ein Bild) aufrufe, bekomme ich einen Fehler "Zugriff verboten, Error 403" (wenn ich die Datei per FTP öffne, dann kann ich sie ohne weiteres lesen)
ERGO: Rechte Problem. Aber auch da habe ich mich schlau gemacht, und die Rechte des hochgeladenen Files per "chmod($file,0777)" (die 0777 zumindest nur temporär für den Test) verändert.
TROTZDEM: Gleicher Fehler. Ich kann die Rechte des hochgeladenen Files also nicht per chmod ändern?!?!?!

Ihr seht, ich kümmer mich um die Sachen, bevor ich diverse Forums-Einträge hinterlasse...
Kann mir jemand weiterhelfen, hat mich schon 3 Tage an "suchen und informieren" gekostet?

Anbei mal meine Funktion:

function uploaddata($saveDir,$fileNameNew) // ist $fileNameNew = "", so wird der alte Name hergenommen
{
$saveDirectory = $saveDir;
$tempName = $_FILES['dokument']['tmp_name'];
$fileName = $_FILES['dokument']['name'];
$extName = strrchr($fileName, ".");
if ($fileNameNew == "")
  $fileName2 = $fileName;
else
$fileName2 = $fileNameNew.$extName;

// Sicherstellen, dass keine unerlaubten Dateien hochgeladen werden
if ($extName == '.doc' || $extName == '.pdf' || $extName == '.txt' || $extName == '.xls' || $extName == '.ppt' || $extName == '.jpg' || $extName == '.gif' || $extName == '.zip'  ) //erlaubte Dateien
{
  if (move_uploaded_file($tempName, $saveDirectory . $fileName2))
  {
   echo 'Datei erfolgreich hochgeladen!<p>';
  }
  else
  {
   echo 'Es ist ein Fehler beim Datei-Upload aufgetreten.<br>';
   $fileName2 = "";
  }
}
else // Dateityp nicht erlaubt
echo "Dieser Dateityp darf aus Sicherheitsgründen nicht auf den Server geladen werden!";

chmod($saveDirectory . $fileName2,O777); // nur zum Testen, später 0644

$returnFileName = $fileName2;
return ($returnFileName);
}