File Probleme

gepi

Grünschnabel
Hallo Zusammen,

Ich habe ein etwas komisches Problem und zwar.

Ich möchte die Grösse der Files in einem bestimmten Ordner anzeigen lassen. Dies mache ich so:
PHP:
$verzeichnis = dir("/usr/local/apache2/current/htdocs/");
while($datei = $verzeichnis->read()) {
echo "Dateiname:$datei Grösse:".filesize($datei)."";
}
$verzeichnis->close();

Wir ihr sicher gemerkt habt, arbeite ich mit einem Linux SuSE 8.0.

Jetzt mein problem:
Lade ich eine Datei über ein Uploadscript hoch, kann ich die Datei grösse nicht anzeigen, jedoch die Datei selbst kann er anzeigen.
Die Fehlermeldung: Warning filesize() [function.filesize]: Stat failed for "Filename" (errno=2 - No such file or directory)

Der Apache hat Vollzugriff auf den Ordner.

Jetzt habe ich mir gedacht, ich lade die Datei per ftp hoch. Jetzt der Gag: Lade ich die Datei im ASCII Mode hoch, kommt die selbe Fehlermeldung im Script, lade ich die Datei jedoch im Binary Mode hoch, kann mir der Script die Dateigrösse an geben.

Kann mir jemand sagen, wie ich den Script schreiben muss, dass er mir die Grösse angeben kann, auch wenn ich die Datei über den Uploadscript hochlade. Oder kann mir irgendjemand sagen, was ich falsch mache oder falsch habe(Einstellungen beim Server oder so).

Danke im voraus für eure Antworten
 
das Script sieht eigentlich OK aus (funktioniert ja auch, ausser bei hochgeladenen Dateien, wenn ich das richtig verstanden habe)

Kann es evtl. an den CHMOD-Rechten der hochgeladenen Datei liegen?

evtl. musst Du dann das Upload-Script um den CHMOD-Befehl erweitern, damit die Datei entsprechende Rechte bekommt.


Dunsti
 
Den CHMOD kann ich nicht per php ändern, da ich den Apache nicht unter root ausführen. Momentan läuft er unter nobody.

Meinst du ich sollte versuchen den nobody zu den root hinzu zufügen?
 
Original geschrieben von gepi
Den CHMOD kann ich nicht per php ändern, da ich den Apache nicht unter root ausführen. Momentan läuft er unter nobody.

Meinst du ich sollte versuchen den nobody zu den root hinzu zufügen?

schlechte Idee mit den Root-Rechten für Nobody ;)

aber da die Datei ja von "Nobody" erstellt wurde (beim hochladen über das Script) hat dieser auch die Rechte, die chmods zu ändern.

http://de3.php.net/manual/de/function.chmod.php


Dunsti
 
PHP:
<?php
if($_POST["Submit"]!="Submit"){
echo "<form action=\"upload.php\" method=\"post\" enctype=\"multipart/form-data\">";
echo "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"2097152\">";
echo "<input name=\"userfile\" type=\"file\" size=\"60\">";
echo "<input type=\"submit\" name=\"Submit\" value=\"Submit\">";
echo "</form>";
}
else{
$dest = '';
echo "".$_FILES['userfile']['name']."<br>";
echo "".$_FILES['userfile']['type']."<br>";
echo "".$_FILES['userfile']['size']."<br>";
echo "".$_FILES['userfile']['tmp_name']."<br>";
echo "".$_FILES['userfile']['error']."<br>";
move_uploaded_file($_FILES['userfile']['tmp_name'], "/usr/local/apache2/2.0.45/htdocs/".$_FILES['userfile']['name']."");
echo "Total space:".round(disk_total_space("/")/"1024"/"1024"/"1024",3)."GB<br>";
echo "Total freespace:".round(disk_free_space("/")/"1024"/"1024"/"1024",3)."GB ".round(("100"/round(disk_total_space("/")/"1024"/"1024"/"1024",3))*(round(disk_free_space("/")/"1024"/"1024"/"1024",3)),2)."% <br>"; 
echo "Total usingspace:".((round(disk_total_space("/")/"1024"/"1024"/"1024",3))-(round(disk_free_space("/")/"1024"/"1024"/"1024",3)))."GB ".round("100"-(("100"/round(disk_total_space("/")/"1024"/"1024"/"1024",3))*(round(disk_free_space("/")/"1024"/"1024"/"1024",3))),2)."% <br>";  
chmod("/usr/local/apache2/2.0.45/htdocs/".$_FILES['userfile']['name']."",0777);
}
echo "<br><br><a href=\"show.php\">show</a>";
?>

Habe jetzt aber etwas anderes entdeckt und zwar, mache ich das selebe auf einem Windows mit Apache und PHP 4.3.1 dann habe ich den selben fehler, also scheint es eigentlich nicht am upload zu liegen, sondern an dem Befehl Upload oder sonst an einer Einstellung, hoffe ihr habt eine Lösung für das Problemchen
 
Zurück