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
<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>
upload.php
<?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/>';*/
?>
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