Uploadscript move_uploaded_file error
Voordat ik mijn vraag stel wil ik graag even zeggen dat ik veel sites en fora heb afgezocht naar een oplossing, maar niet heb gevonden. Ik hoop dat jullie mij kunnen helpen!
Ik ben bezig met een uploadscript, welke uiteindelijk een foto-uploadscript moet worden, maar dat is een stap verder.
De pagina bestaat (zoals gewoonlijk) uit twee bestanden, upload.html met het formulier, en upload.php, met het script.
upload.html
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<h1>File Upload</h1>
<form action="upload.php" method="post" enctype="multipart/form-data" />
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<label for="userfile">Upload a file:</label>
<input type="file" name="userfile" id="userfile" />
<input type="submit" value="Upload!" />
</div>
<form action="upload.php" method="post" enctype="multipart/form-data" />
<div>
<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
<label for="userfile">Upload a file:</label>
<input type="file" name="userfile" id="userfile" />
<input type="submit" value="Upload!" />
</div>
upload.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
$uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/upload/uploads/';
if ($_FILES['userfile']['error'])
{
echo 'Probleem: ';
switch ($_FILES['userfile']['error'])
{
case 1: echo 'Bestand te groot om te uploaden!';
break;
case 2: echo 'Bestand te groot!';
break;
case 3: echo 'Bestand gedeeltelijk geupload!';
break;
case 4: echo 'Geen bestand geupload!';
break;
case 6: echo 'Kan het bestand niet uploaden: geen tijdelijke directory beschikbaar!';
break;
case 7: echo 'Upload misukt: kan niet schrijven naar doel!';
break;
}
exit;
}
//Kijken of het bestand het juiste type is
if ($_FILES['userfile']['type'] != 'text/plain')
{
echo 'Probleem: upload is geen tekst-bestand!';
exit;
}
//Bestand plaatsen!
$upfile = $uploadDir.$_FILES['userfile']['name'];
//Kijken of het bestand daadwerkelijk geupload is
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
//Kijken of het bestand in de tijdelijke map staat
if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadDir.$_FILES["userfile"]["name"]))
{
echo 'Probleem: kon het bestand niet verplaatsen naar doelmap!';
exit;
}
}
//Bestand is niet echt geupload
else
{
echo 'Probleem: Mogelijke file upload attack. Filename: ';
echo $_FILES['userfile']['name'];
exit;
}
echo 'Upload van bestand succesvol!<BR><BR>';
//Preview van geupload bestand
/*echo '<P>Voorbeeld van geupload bestand:<br/><hr/>';
echo '<img src = "' .$upfile. '">';
echo '<br/><hr/>';*/
?>
$uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/upload/uploads/';
if ($_FILES['userfile']['error'])
{
echo 'Probleem: ';
switch ($_FILES['userfile']['error'])
{
case 1: echo 'Bestand te groot om te uploaden!';
break;
case 2: echo 'Bestand te groot!';
break;
case 3: echo 'Bestand gedeeltelijk geupload!';
break;
case 4: echo 'Geen bestand geupload!';
break;
case 6: echo 'Kan het bestand niet uploaden: geen tijdelijke directory beschikbaar!';
break;
case 7: echo 'Upload misukt: kan niet schrijven naar doel!';
break;
}
exit;
}
//Kijken of het bestand het juiste type is
if ($_FILES['userfile']['type'] != 'text/plain')
{
echo 'Probleem: upload is geen tekst-bestand!';
exit;
}
//Bestand plaatsen!
$upfile = $uploadDir.$_FILES['userfile']['name'];
//Kijken of het bestand daadwerkelijk geupload is
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
//Kijken of het bestand in de tijdelijke map staat
if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadDir.$_FILES["userfile"]["name"]))
{
echo 'Probleem: kon het bestand niet verplaatsen naar doelmap!';
exit;
}
}
//Bestand is niet echt geupload
else
{
echo 'Probleem: Mogelijke file upload attack. Filename: ';
echo $_FILES['userfile']['name'];
exit;
}
echo 'Upload van bestand succesvol!<BR><BR>';
//Preview van geupload bestand
/*echo '<P>Voorbeeld van geupload bestand:<br/><hr/>';
echo '<img src = "' .$upfile. '">';
echo '<br/><hr/>';*/
?>
Naar mijn idee zou dit prima moeten werken, het volgende is echter het probleem:
Warning: move_uploaded_file(/home/deb17082/domains/abouttdesign.com/public_html/upload/uploads/Singleton-ding.txt) [function.move-uploaded-file]: failed to open stream: Permission denied in /usr/home/deb17082/domains/abouttdesign.com/public_html/upload/upload.php on line 49
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php47PHBp' to '/home/deb17082/domains/abouttdesign.com/public_html/upload/uploads/Singleton-ding.txt' in /usr/home/deb17082/domains/abouttdesign.com/public_html/upload/upload.php on line 49
Probleem: kon het bestand niet verplaatsen naar doelmap!
-----
- Het CHMODden van de mappen zit goed, ookal staan ze op 777, foutmelding blijft.
- Op andere sites las ik het probleem met de home-directory enz., naar mijn idee heb ik het op de manier als hierboven staat toch maximaal opgevangen door het complete pad te gebruiken.
- Origineel had ik de regel if (!move_uploaded_file($_FILES['userfile']['tmp_name'], $upfile)), dit heb ik uitgebreid naar de regel zoals hierboven in de code staat.
Heb ook verschillende dingen met htaccess en php_ini_set geprobeerd, maar vooralsnog zonder resultaat.
Wat o wat is toch het probleem?
Groeten
Eric
Gewijzigd op 01/01/1970 01:00:00 door Eric
move_uploaded_file() kun je natuurlijk niet 2x aanspreken, dus daar kom je later mee in de problemen. Verder denk ik toch dat er iets niet helemaal correct is mbt rechten. Al contact opgenomen met je hoster?
Arjan Kapteijn schreef op 01.04.2009 13:45:
move_uploaded_file() kun je natuurlijk niet 2x aanspreken, dus daar kom je later mee in de problemen. Verder denk ik toch dat er iets niet helemaal correct is mbt rechten. Al contact opgenomen met je hoster?
move_uploaded_file() is mijn eigen fout inderdaad (en een stomme ^^) Ik heb zoveel zitten veranderen dat ik niet meer zeker wist of ik alles nu weer had teruggedraaid. Heb bovenstaande post even aangepast, staat nu weer zoals het hoort. (En scheelt inderdaad al 1 foutmelding)
Even over de hoster..wat moet ik aan hun voorleggen? M.a.w., wat zou ik van hun willen weten of wat zouden ze moeten veranderen? (Host overigens bij Antagonist)
Eric
Code (php)
1
2
3
2
3
<?php
if(!move_uploaded_file($_FILES['userfile']['tmp_name'], 'uploads/'.$_FILES['userfile']['name']))
?>
if(!move_uploaded_file($_FILES['userfile']['tmp_name'], 'uploads/'.$_FILES['userfile']['name']))
?>
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php47PHBp' to 'uploads/Singleton-ding.txt' in /usr/home/deb17082/domains/abouttdesign.com/public_html/upload/upload.php on line 49
Probleem: kon het bestand niet verplaatsen naar doelmap!
Ben toch echt bang dat de rechten op de doelmap niet goed staan.
Doelmap rechten zullen niet voldoende zijn.
En kijk ff op je map wel de juiste rechten heeft.
Ik zal het even uitleggen...
Ik was er stellig van overtuigd dat de mappen waarin de geuploade bestanden terechtkomen de rechten 777 had.
Dit had ik namelijk met Dreamweaver CS4 via de FTP ingesteld.
Na jullie berichten begon ik er toch aan te twijfelen, en ging ik kijken in de filemanager van mijn account. Daar stond, je raadt het al, 755.
Na het veranderen van de rechten via de filemanager blijven de rechten wel gewoon staan, en werkt het script volledig.
Dreamweaver heeft bij mij nu toch iets aan reputatie verloren, een niet werkende functionaliteit is toch wel een beetje jammer...
Dus..sorry, en toch heel erg bedankt!
Groeten
Eric