Hey,
Wanneer ik een foto wil uploaden naar mijn site krijg ik de volgende error:
Fatal error: Allowed memory size of 47185920 bytes exhausted (tried to allocate 3648 bytes) in [php-file-hier] on line 108
De foto is 2,4Mb groot, en ik heb mijn script staan op: $max_grootte = 3400000; // ( = 3.2MB) (in bytes)
Mijn Memory_Limit in de php.ini staat op 32M (vergroten naar 64M loste het probleem niet op)
Zie phpinfo() hier (link aub niet openbaar maken)
http://tinyurl.com/39hlb7l
Heeft iemand een idee waar het probleem kan zitten?
Ps. Kleinere foto's lukt wel (1,9Mb bijvoorbeeld)
- PHP Memory size probleem
-
21-10-2010, 15:17 #1
- Berichten
- 348
- Lid sinds
- 16 Jaar
PHP Memory size probleem
Laatst aangepast door Ton van Alebeek : 21-10-2010 om 16:10
-
In de schijnwerper
-
21-10-2010, 15:26 #2
- Berichten
- 1.470
- Lid sinds
- 19 Jaar
Re: PHP Memory size probleem
Nog een beetje verhogen, maar waarom ga ik je in godsnaam een foto van 2.4 mb uploaden? Verklein ze dan eerst.
-
21-10-2010, 15:41 #3
- Berichten
- 348
- Lid sinds
- 16 Jaar
Re: PHP Memory size probleem
Ja ik zit te twijfelen.. gebruikers weten natuurlijk niet altijd hoe ze foto's moeten verkleinen. Achteraf worden ze wel verkleind op de server, maar ik kan ze niet vooraf verkleinen. Toch?
-
21-10-2010, 15:48 #4
- Berichten
- 760
- Lid sinds
- 16 Jaar
Re: PHP Memory size probleem
Misschien heb je hier wat aan?
http://www.google.be/search?sourceid...k+image+script
Btw: Leuk domein heb je :)
-
21-10-2010, 15:53 #5
- Berichten
- 348
- Lid sinds
- 16 Jaar
Re: PHP Memory size probleem
Misschien heb je hier wat aan?
http://www.google.be/search?sourceid...k+image+script
Btw: Leuk domein heb je :)
Raden jullie me aan om gewoon de limiet op 2Mb ofzo te zetten, en de gebruiker zelf zijn foto's te laten verkleinen? Of is er een andere manier?
-
21-10-2010, 15:58 #6
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Re: PHP Memory size probleem
Weet niet wat voor server je hebt (qua RAM), maar je kunt best wat spelen met het memory_limit.
-
21-10-2010, 16:10 #7
- Berichten
- 348
- Lid sinds
- 16 Jaar
Re: PHP Memory size probleem
-
21-10-2010, 16:15 #8
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: PHP Memory size probleem
verstandiger is om te kijken waarom je script 45mb (47185920 bytes) nodig heeft voor een foto van 2-3 mb ;)
-
21-10-2010, 16:48 #9
- Berichten
- 348
- Lid sinds
- 16 Jaar
Re: PHP Memory size probleem
PHP Code:<?php
$id = replace_str($_GET['id']);
$Submit = replace_str($_POST['Submit']);
$userfile = replace_str($_POST['userfile']);
if($_SESSION['ingelogd'] != "OK") {
header("Location: edit1_bedrijf.php");
}
if($Submit || $userfile){
if($userfile != "none")
{
$max_size = "$max_grootte";
if ($_FILES['userfile']['type'] !== 'image/pjpeg' && $_FILES['userfile']['type'] !== 'image/jpeg'){
echo "<p>Helaas, het is alleen mogelijk om een foto te gebruiken van het type jpg. <br>De advertentie is toegevoegd zonder foto!</p><br><br>";
}
elseif ($_FILES['userfile']['size'] > $max_size)
{
echo "Helaas, de gekozen foto is te groot. Uw advertentie is toegevoegd zonder foto!<br><br>";
} else {
$thefilesize = filesize("inc.php");
$filenum = fopen("inc.php","r");
$nr = fread($filenum, $thefilesize+1);
fclose($filenum);
$nr++;
$filenum = fopen("inc.php","w");
fwrite($filenum,$nr);
fclose($filenum);
if(is_uploaded_file($_FILES['userfile']['tmp_name']))
{
move_uploaded_file($_FILES['userfile']['tmp_name'], "images_upload/".$nr.".jpg");
$foto_url = "images_upload/{$nr}.jpg";
//chmod($foto_url, 0600);
}
$foto = "$nr.jpg";
include("thumb.php");
//Waar komt het bestand vandaan?
$bronvanhetbestand = "images_upload/$nr.jpg";
//De hoogte en breedte ophalen van het plaatje
$dimensions = getimagesize($bronvanhetbestand);
//Dit is de breedte die alle plaatjes krijgen
$doelbreedte = 200;
//Hoogte en breedte toekennnen aan nieuwe variabelen
$bronbreedte = $dimensions[0];
$bronhoogte = $dimensions[1];
//De nieuwe hoogte berekenen aan de gegevens van het oude plaatje en de doel breedte
$doelhoogte = ($bronhoogte * $doelbreedte) / $bronbreedte;
//De hoogte, als het nodig is, afronden
$doelhoogte = round($doelhoogte, 0);
//Zeggen dat dit bestand een plaatje is
//header('content-type: image/jpeg');
//Het plaatje inlezen in de variabele $image
$image = imagecreatefromjpeg($bronvanhetbestand);
//een nieuw klein plaatje maken met de gewenste grootte
$destination = imagecreatetruecolor($doelbreedte, $doelhoogte);
//Het nieuwe plaatje vullen met verkleinde plaatje
imagecopyresampled($destination, $image, 0, 0, 0, 0, $doelbreedte, $doelhoogte, $bronbreedte, $bronhoogte);
//Het plaatje weergeven
//imagejpeg($destination);
imagejpeg($destination, "images_upload/thumbs/$nr.jpg");
$thumb_url = "images_upload/thumbs/{$nr}.jpg";
//chmod($thumb_url, 0600);
//Het bronplaatje verwijderen
imagedestroy($image);
//Het doelplaatje verwijderen
imagedestroy($destination);
$res = mysql_fetch_object(mysql_query("SELECT * FROM part WHERE id = '$id'"));
$foto1 = $res->foto;
$foto2 = $res->foto2;
$foto3 = $res->foto3;
$foto4 = $res->foto4;
$foto5 = $res->foto5;
$foto6 = $res->foto6;
$foto7 = $res->foto7;
$foto8 = $res->foto8;
$land = $res->land;
$accomodatie = $res->accomodatie;
$id = $res->id;
if (empty($foto1)) {
$sql = "UPDATE part SET foto = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto2)) {
$sql = "UPDATE part SET foto2 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto3)) {
$sql = "UPDATE part SET foto3 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto4)) {
$sql = "UPDATE part SET foto4 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto5)) {
$sql = "UPDATE part SET foto5 = '".$foto."' WHERE id = '" .$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto6)) {
$sql = "UPDATE part SET foto6 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto7)) {
$sql = "UPDATE part SET foto7 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto is succesvol toegevoegd!</b><br><br>";
echo"<a href=\"foto_toevoegen_part.php?id=".$id ."\"><b>Nog een foto toevoegen</b></a><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om de gewijzigde advertentie te bekijken";
} elseif(empty($foto8)) {
$sql = "UPDATE part SET foto8 = '".$foto."' WHERE id = '".$id ."'";
mysql_query($sql);
echo "<b>Uw foto's zijn succesvol toegevoegd!</b><br><br>";
echo"Klik <a href=\"$Url/$land/$accomodatie/$id.html\"><u>hier</u></a> om uw gewijzigde advertentie te bekijken";
} else {
echo "<b>U heeft reeds 8 foto's geupload</b><br><a href=\"$Url/$land/$accomodatie/$id.html\">Klik hier om de advertentie te bekijken.</a></b>";
unlink("images_upload/thumbs/$foto");
unlink("images_upload/$foto");
}
}
}
} elseif($_SESSION['ingelogd'] == "OK") {
echo "<center>";
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\" align=\"center\" class=\"post\" width=\"100%\">";
echo "<form method=\"POST\" action=\"" . $PHP_SELF . "?id=".$id ."\" enctype=\"multipart/form-data\">";
echo "<div align=\"left\">Kies een foto: <input name=\"userfile\" type=\"file\"></div><br />";
echo "<div align=\"left\"><input type=\"submit\" name=\"Submit\" value=\"Toevoegen\" class=\"button\"/></div>";
echo "</form>";
echo "</table>";
echo "</center>";
} else {
echo "<p>U heeft geen rechten om deze pagina te bezoeken.</p>";
}
?>
-
21-10-2010, 16:53 #10
- Berichten
- 691
- Lid sinds
- 15 Jaar
Re: PHP Memory size probleem
Ben geen expert maar dit vind ik al vreemd:
$max_size = "$max_grootte";
-
21-10-2010, 17:01 #11
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Re: PHP Memory size probleem
Eigen geschreven script of?
-
21-10-2010, 17:03 #12
- Berichten
- 348
- Lid sinds
- 16 Jaar
Re: PHP Memory size probleem
@ S. van Laere
Die $max_grootte wordt in een include ingesteld, zodat dit maar 1 keer aangepast hoeft te worden.
Staat nu op "$max_grootte = 3400000; // ( = 3.2MB) (in bytes)"
@ Tom Verhaeg
Script is gekocht van iemand hier op 't forum.
-
21-10-2010, 17:07 #13
- Berichten
- 691
- Lid sinds
- 15 Jaar
Re: PHP Memory size probleem
Maar als het toch via een include gaat kun je beter
direct de variablenaam van je include gebruiken. (dus zonder eerst weer een variabele toe te wijzen met een andere variabele)
Lijkt mij het meest logisch.Laatst aangepast door S. van Laere : 21-10-2010 om 17:12
-
21-10-2010, 17:16 #14
- Berichten
- 348
- Lid sinds
- 16 Jaar
Re: PHP Memory size probleem
@ S. van Laere
Ah op die manier. Daar heb je inderdaad gelijk in. Meteen even aangepast, maar dat lost het probleem nog steeds niet op.
-
21-10-2010, 17:27 #15
- Berichten
- 691
- Lid sinds
- 15 Jaar
Re: PHP Memory size probleem
Het enige wat ik kan bedenken is dat het fout gaat met het geheugen wanneer je een afbeelding wilt verkleinen. Ik dacht dat JPG en PNG afbeeldingen eerst dienen te worden "uitgepakt" alvorens er bewerkingen mogelijk zijn. Kan het ook mis hebben.
Lijkt mij niet dat het probleem enkel zit in het uploaden?
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic