Det känns som att när man får meddelandet ovan försöker man ladda upp en för stor fil men så är inte fallet.
Jag använder nedanstående php-skript, mappen som både mappen files (där bilderna ska hamna) och php-filen ligger är chmoddad till 777 och bilden jag försöker ladda upp är på ca 17kb.
<?php
/*
Mycket enkelt upload-script av jostor.
Får användas fritt.
Ska fungera på alla PHP-versioner över 4.1.0,
och på de flesta system.
*/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Ladda upp en fil</title>
</head>
<body>
<?php
if (isset($_FILES['uplfile'])) {
// Mappen där filerna ska hamna
$upload_dir = 'files/';
// De tillåtna filtyperna, separerade med komman, utan mellanrum
$filetypes = 'jpg,gif,png';
// Den största tillåtna storleken (80 kB)
$maxsize = (1024*80);
// Kontrollera att det angavs en fil
if(empty($_FILES['uplfile']['name']))
die('Ingen fil har valts');
// Kontrollera storleken
if($_FILES['uplfile']['size'] > $maxsize)
die('Filen du valde är för stor. Maxstorleken är '.(string)($maxsize/1024).' KB.');
// Kontrollera filtypen
$types = explode(',', $filetypes);
$file = explode('.', $_FILES['uplfile']['name']);
$extension = $file[sizeof($file)-1];
if(!in_array(strtolower($extension), $types))
die('Du har en felaktig filtyp. Endast .jpg, .gif och .png är tillåtet!');
// Generera unikt filnamn
$bokstav = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6');
$thefile = $_FILES['uplfile']['name'];
while (file_exists($upload_dir.$thefile)) { $img = $bokstav[rand(0, count($bokstav)-1)].$thefile; }
// Flytta filen rätt
if (is_uploaded_file($_FILES['uplfile']['tmp_name']) && move_uploaded_file($_FILES['uplfile']['tmp_name'],$upload_dir.$thefile)) {
echo 'Filen laddades upp!';
/*
Uppladdningen lyckades.
Här kan man även lägga eventuell kod för t.ex. databashantering.
Filnamnet ligger i $thefile.
Ytterliggare fält i formuläret får du som vanligt med $_POST
*/
} else {
echo 'Ett fel uppstod och filen kunde inte laddas upp.';
/*
Uppladdningen misslyckades.
*/
}
}
else
{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
Fil: <input type="file" name="uplfile"><br>
<input type="submit" value="Ladda upp filen">
</form>
<?php
}
?>
</body>
</html>
Inställningen för safe_mode ser du i php.ini eller genom funktionen phpinfo() men jag tror inte att det beror på safe_mode då du borde fått ett annat felmeddelande då.
Trodde att felet var i din evighetsloop för jag ser inget annat fel.
Det stämmer att jag har den på mitt webbhotell, jag la in din kod och det tog längre tid innan felmeddelandet kom upp. Jag ökade på tiden bara för att se vad som skulle hända. När jag var uppe i 500 (!) så kom inte något felmeddelande upp dock blev sidan bara blank och när jag gick till mappen files som då ligger i samma mapp som php-filen var den ändå tom...
Bra att det inte blev något felmeddelande, men varför kom inte bilden in i mappen files och även om det hade fungerat är det ju på tok för lång uppladdningstid...
Jo, nu när jag ändrar i while satsen så får jag nedanstående meddelande. Har du testat ditt skript skarpt utan att det blir felmeddelande?
Jag har testat med både 755 och 777 (chmod) med samma resultat.
Warning: move_uploaded_file(files/jenny_port.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied domains/mindomän.se/public_html/form/upload.php on line 46
Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/var/uploads/phpD2F4qg' to 'files/jenny_port.jpg' in domains/mindomän.se/public_html/form/upload.php on line 46
Ett fel uppstod och filen kunde inte laddas upp.
Kör webbhotellet med Windows eller Linux?
Om det är Windows så kan du inte chmodda en mapp utan du måste sätta rättigheterna från kontrollpanelen om dom har den funktionen eller ringa till dom och be dom sätta rättigheterna på mappen.
Linux och jag har chmoddat den i kontrollpanelen. Tror du att det är rättigheterna som är problemet? då är det kanske webbhotellet jag ska kontakta för hjälp?
Ok nu funkar det!! Jag har slarvigt nog bara chmoddat mappen och inte mappen files som ligger i form-mappen... Sorry för att jag var så slarvig men super tack för all din hjälp!!