PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Upload Script


thorben
19.10.2003, 18:00:37
Guten Tag!

Ich bin gerade an einem Datei-Upload-Script zugange:
Bei einer Version auf dem Server funktioniert es, wenn ich es aber vom Server per FTP runterlade, wird gesagt; Permission denied on line...

Liegt es an der Codierung (ASCII oder BIN)?

Hier mal das Script:

<?php
$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];

$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];

if($type != "image/gif" && $type != "image/pjpeg")
{
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "150000") {
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
}

If(empty($err)) {
copy("$tempname", "$name");
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error);
echo "$error<br>";
}


?>


<form enctype="multipart/form-data" action="<?php echo $PHP_SELF; ?>" method="post"><br>
<input class="forms" name="file" type="file"><br>
<input class="forms" type="submit" value="hochladen">
</form>

Ok, danke für Eure Hilfe.

Thorben Kühl

Ben20
19.10.2003, 18:17:11
Das liegt an den Dateirechten. PHP läuft bei Dir wahrscheinlich als Modul und somit unter den Benutzerrechten des Webservers. Per FTP hast Du aber einen anderen Usernamen, welche keine Rechte auf die Datei hast. Du kannst das evtl. lösen indem Du der Datei nach dem Upload andere Rechte gibst. Dafür gibts die Funktion chmod().

thorben
19.10.2003, 18:26:14
Danke für die schnelle Antwort, aber...

Die Recht habe ich vergeben (777), aber es ändert nichts an der Situation.
Er sagt zwar, dass die Datei "erfolgreich hochgeladen" wurde, aber es ist nicht so!

Hier ist mal der Link dahin:
http://www.about.x777.net/test/log.php

Thorben

Ben20
19.10.2003, 19:00:53
<?php
$tempname = $_FILES['file']['tmp_name'];
$name = $_FILES['file']['name'];

$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];

if($type != "image/gif" && $type != "image/pjpeg") //Tippfehler ein "p" zuviel
{
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "150000") {
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!";
}

If(empty($err)) {
copy("$tempname", "$name"); //Hier ist der Pfad falsch. Hochgeladene Dateien landen nicht sofort im gleichen Ordner wie das Script sondern in einem Temp Ordner, wenn Du also die Datei in gleichen Ordner haben willst wie das Script dann musst Du aus $name ein "./$name" machen. Außerdem wäre es besser wenn Du move_uploaded_file() nimmst statt copy - dann killst Du gleich die alte Datei!
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error);
echo "$error<br>";
}


?>




Das Permission Denid beim Download per FTP (ist richtig so, oder?) kommt wie gesagt daher das die hochgeladene Datei (nicht das Script!!!) nicht über entsprechende Rechte verfügt

thorben
19.10.2003, 19:25:18
"./$name" Das verstehe ich nicht, da ich dieses Script in einem anderen Ordner funktioniert -es ist wirklich absolut das gleiche!
Wie soll ich das denn realisieren?

Sorry, ich komme mir irgendwie doof vor, na ja, wie dem auch sei.

Hier ist der Link, der ursprünglichen Datei, die gnadenlos funktioniert:
http://www.about.x777.net/save/log.php

Danke wirklich. Thorben.

Ben20
19.10.2003, 20:51:15
Nochmal von Vorne, wann genau bekommst Du die Fehlermeldung? Wenn Du ein Datei über das Script hochlädst oder wenn Du versuchst die Datei mit deinem FTP Programm runter zu laden?

thorben
20.10.2003, 02:12:04
Ich bekomme die Meldung, wenn ich versuche, die Bild-Datei hochzuladen!

Ben20
20.10.2003, 07:17:31
Dann liegts eindeutig an den Rechten des Ordners. Die müssen auch auf 777 stehen. SafeMode könnte evtl. noch ein Problem sein, vielleicht musst Du da noch was umstellen. Versuchs erstmal mit den Ordnerrechten und wenn das nicht klappt sehen wir weiter!

thorben
20.10.2003, 13:20:40
Hey Ben!

Es klappt, die Rechte auf "777" gestellt und alles wird gut!
Vielen, vielen Dank für die Hilfe.

Thorben Kühl

nino
22.10.2003, 16:40:30
hey ho!

ich hab den code bei mir auch mal ausprobiert (allerdings mit den verbesserungsvorschlägen von "ben20")! Bei mir kommen keine Fehlermeldungen bzw. tut er so als hätte alles geklappt, aber ich finde die Datei dann nicht auf dem server!

Muss ich noch irgendwas beachten? (die rechte des temporären und des endgültigen ordners sind auf 777)

also ich hab bei $tempname dann den tmp-ordner angegeben und bei $name den endgültigen ordner. ist das richtig?

Gruß nino...

Ben20
22.10.2003, 19:34:48
Bei $tempname brauchst Du nur den Temporären Namen der hochgeladenen Datei $_FILES["inputname"]["tmp_name"]. Bei $name brauchst Du den gewünschten Zielpfad und (!) den gewünschten Namen der Datei!

nino
25.10.2003, 16:12:21
hochladen.htm

<FORM ACTION="hochladen.php" enctype="multipart/form-data" METHOD="post">
<TABLE WIDTH="550">
<TR>
<TD BGCOLOR="#F0F0F0">Bild:</TD>
<TD BGCOLOR="#F0F0F0">(200x200 px)</TD>
</TR>
<TR>
<TD COLSPAN="2" BGCOLOR="#F0F0F0"><INPUT TYPE="file" NAME="bild" SIZE="102"></TD>
</TR>
<TR>
<TD COLSPAN="2"><INPUT TYPE="submit" CLASS="Button" VALUE="Absenden"></TD>
</TR>
</TABLE>
</FORM>


hochladen.php


$bild = $HTTP_POST_VARS['bild'];

//---UPLOAD---------ANFANG----------------------------------


$size = $bild_size; // Größe der Datei

$bildname = $bild_name; // Der Originalname

$type = $bild_type; // Der MIME Type der Datei


if(eregi("(jpg|gif|txt|htm|html)$",$bildname)) {
if($size<15000 AND $size!=0) {
move_uploaded_file($bild,$bildname); // Kopiert das Bild


echo "Die Datei wurde erfolgreich hochgeladen.<br>";
echo "Größe: ".$size." Byte<br>";
echo "Name: ".$bildname."<br>";
echo "MIME-Type: ".$type."<br>";
echo "Ansehen: <a href='".$bildname."'>".$bildname."</a><br>";
} else {
echo "Ihre Datei ist zu groß oder gleich 0";
}
} else {
echo "Falsche Erweiterung: ".$bildname;
}

//---UPLOAD--------ENDE-----------------------------------


Mit diesem Code versuche ich gerade meinen Upload zu realisieren. Scheint auch alles zu klappen, nur die datei befindet sich danach nicht auf dem Server! (Rechte des Ordners = 777)!

Was mache ich falsch?

Danke, nino