8722 sujets

Développement web côté serveur, CMS

Bonjour les gens,

Je travaille sur un site où le gestionnaire de celui-ci peut uploader des fichiers (images et
vidéos) assez volumineux sur le serveur.

La partie vidéo est déjà faite, on peut facilement uploader des fichiers qui vont jusqu'à
75MB.

Par contre, l’upload d’image ne semble pas prendre en compte la limite de 75MB que j’ai
mise dans le php.ini. Je peux facilement uploader une image de 10,6MB par contre, il semble
qu’à partir d’autour de 11MB ça ne fonctionne plus. (J’ai essayé avec une image de 11,6MB).

J’ai simplifié mon code au maximum pour tenter de voir d’où cette erreur peut venir.

Donc, voici mon formulaire tout simple :

 <form action="?" method="post" enctype="multipart/form-data">
      <input type="hidden" name="MAX_FILE_SIZE" value="78643200" />
      <label for"image">FIchier à uploader:</lavel><input type="file" name="image" />
      <input type="submit" name="submit" />
    </form>


Et le php qui lui est rattaché :

if(isset($_POST['submit'])){
$folder = 'photos/';
$folder_thumb = 'thumbnails/';
		
//print_r($_FILES);
	
//Image originale
$orig_w = 1024;	
$imageFile = $_FILES['image']['tmp_name'];														
$filename=basename(date("YmdHmsms")).'.jpg';		
list($width, $height) = getimagesize($imageFile);
$src=imagecreatefromjpeg($imageFile);															
$orig_h=($height/$width)*$orig_w;																													
$tmp = imagecreatetruecolor($orig_w,$orig_h);													
imagecopyresampled($tmp, $src, 0,0,0,0,$orig_w,$orig_h,$width,$height);							

imagejpeg($tmp, $folder.$filename,100);																			
$filename = urlencode($filename);
	
//Thumbnail
$orig_thumb_w = 500;
$orig_thumb_h = ($height/$width)* $orig_thumb_w;
$tmp = imagecreatetruecolor($orig_thumb_w, $orig_thumb_h);
imagecopyresampled($tmp, $src, 0,0,0,0,$orig_thumb_w,$orig_thumb_h,$width,$height);
imagejpeg($tmp, $folder_thumb.$filename,100);
imagedestroy($tmp);
imagedestroy($src);
}

Je n’arrive pas à voir où ça accroche.

Des idées, suggestions, pistes de solutions?

Edit: Je suis désolée pour l'indentation bizarre du PHP, on dirait que je ne peux pas faire mieux. Smiley confus
Modifié par JusteVal (25 Apr 2013 - 19:51)
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 45008 bytes) in upload.php on line 98.

Line 98 correspond à :
$src = imagecreatefromjpeg($imageFile);	
Oui je m'en doutais. Smiley smile

En fait ton image utilise trop de mémoire vive quand tu essaye de la manipuler avec GD2. C'est pas un problème de taille de fichier à l'upload.

Solution : limiter la taille des fichiers images au téléchargement ou allouer plus de mémoire à PHP.
Je confirme qu'allouer plus de mémoire à php fonctionne comme un charme.

Merci encore, je n'aurais jamais pensé à ça par moi-même.