Nach Upload fehlende Rechte

Ich_halt224

Erfahrenes Mitglied
Hallo ihr Lieben,

ich habe nun ein recht "exotisches" Problem. (sehe ich jedenfalls so^^)

Also, ich habe ein Uploadscript auf meinem Server, hier der Code der upload.php:

PHP:
<?
if($_FILES){
    for($i=1;$i<6;$i++){
        if($_FILES['file']['tmp_name'][$i] == '') continue 1;
        $tempname       = $_FILES['file']['tmp_name'][$i];
        $type           = $_FILES['file']['type'][$i];
        $size           = $_FILES['file']['size'][$i];

        $ext            = $type == 'image/gif' ? '.gif' : '.jpg';
        $num            = 1;
        $name           = 'File00001'.$ext;
        while(file_exists($name)) {
          $num++;
          $name = 'File'.str_repeat('0', 5-strlen((string)$num)).$num.$ext;
        }
        if(move_uploaded_file($tempname, $name)){
            echo "<font color=\"white\"><p><p><center>Die Datei $name wurde erfolgreich hochgeladen!<br>
                  Die Adresse zu deinem Foto ist folgende:   <a target='_blank' href='http://www.chvt.de/images/$name'>www.chvt.de/images/$name</a></center></font><br><br>";
        } else {
            echo "Datei konnte nicht hochgeladen werden<br>";
        }
    }
}
?>
<body bgcolor="#000000">

<form method="POST" enctype="multipart/form-data">
&nbsp;<p align="center">&nbsp;</p>
<p align="center"><font color="#FFFFFF" face="Chiller" size="6">Hier könnt Ihr 
eure Fotos hochladen:</font></p>
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>
<p align="center">
<input type="file" name="file[1]">
</p>
<p align="center">
<input type="file" name="file[2]">
</p>
<p align="center">
<input type="file" name="file[3]">
</p>
<p align="center">
<input type="file" name="file[4]">
</p>
<p align="center">
<input type="file" name="file[5]">
</p>
<p align="center">
<input type="submit" value="Hochladen">
</p>
</form>

Wie ihr ja seht, gibt das Script folgendes Echo aus:
Code:
Die Datei File00006.jpg wurde erfolgreich hochgeladen!
Die Adresse zu deinem Foto ist folgende: www.chvt.de/images/File00006.jpg

Mein Problem ist, dass wenn man auf den Link klickt, man eine Fehlerseite bekommt.
Könnt ja zum Spaß mal hier klicken!http://www.chvt.de/images/File00006.jpg

Nun habe ich mich die ganze Zeit gefragt weshalb das so ist, denn der Dateiname ist richtig und die Datei liegt auch auf dem Server.
Als ich dann eines der Bilder auf meinen PC geladen habe per FTP und es genau so auch wieder auf den Server geladen habe, konnte ich plötzlich das Bild sehen.

Also schaute ich mit die Dateiattribute an.
Die Dateien die per Uploadscript hochgeladen wurden haben die Attribute 600, die Datei die ich per FTP hochgeladen habe 644.

Bedeutet, bei den Dateien, die per Uploadscript hochgeladen werden, fehlen einfach die Berechtigungen, diese anschauen zu können.

Könnt Ihr mir da helfen?
Woran könnte das liegen?
Muss das am Server umgestellt werden?


Vielen Dank und liebe Grüße

Tim
 
Grundsätzlich sind die Attribute sicher, wenn man weiß, was umask ist und wie es funktioniert. Vermutlich hat der Provider des Webspace eine umask 0177 für den Apache-User eingestellt, woraus sich der für diese Rechte ergeben.

Du kannst aber mit chmod($pfad_zur_datei, 0660); die Rechte ändern.
 
Sicher kannst du das.

chmod($name, 0660); nach move_uploaded_file...

Allerdings seh ich grad was anderes: Wo liegt dieses Script genau?
 
Nein, dann hat es sich erledigt, weil du ja nur einen Dateinamen bei move_uploaded_file angegeben hast und keinen Pfad. Wenn die upload.php ne Ebene höher gewesen wäre, wäre die Datei auch ne Ebene höher gespeichert worden. So ist es aber ok.
 
Ok, danke für die Hilfe.

Könntest du mir den Befehl chmod($name, 0660); noch schnell in das Script setzen, da wo es hingehört und das hier posten? Wäre klasse! Danke!

Liebe Grüße

Tim
 
PHP:
if($_FILES){ 
    for($i=1;$i<6;$i++){ 
        if($_FILES['file']['tmp_name'][$i] == '') continue 1; 
        $tempname       = $_FILES['file']['tmp_name'][$i]; 
        $type           = $_FILES['file']['type'][$i]; 
        $size           = $_FILES['file']['size'][$i]; 

        $ext            = $type == 'image/gif' ? '.gif' : '.jpg'; 
        $num            = 1; 
        $name           = 'File00001'.$ext; 
        while(file_exists($name)) { 
          $num++; 
          $name = 'File'.str_repeat('0', 5-strlen((string)$num)).$num.$ext; 
        } 
        if(move_uploaded_file($tempname, $name)){
            chmod($name, 0666); // <<< HIER
            echo "<font color=\"white\"><p><p><center>Die Datei $name wurde erfolgreich hochgeladen!<br> 
                  Die Adresse zu deinem Foto ist folgende:   <a target='_blank' href='http://www.chvt.de/images/$name'>www.chvt.de/images/$name</a></center></font><br><br>"; 
        } else { 
            echo "Datei konnte nicht hochgeladen werden<br>"; 
        } 
    } 
}
 
Zurück