Aller au contenu

Problème upload fichier par formulaire


Sujets conseillés

Posté

Bonjour,

J'upload et je redimensionne des fichiers jpeg par l'intermediare d'un script php.

Tout fonctionne mis à part quand j'upload des fichiers plus grand que 2 Mo (environ).

Quand j'essaye d'uploader un fichier de 3 Mo (par exemple), le script ne passe pas la vérfication : is_uploaded_file

<?PHP
//FICHIER AJOUT_PHOTO.PHP
$serie = $_POST['serie'];
$file_tmp = $_FILES['imgfile']['tmp_name'];

if(!is_uploaded_file($file_tmp))
{
$query = "INSERT INTO photos (id,num_categorie,photos,date,heure) VALUES ('','$serie','',NOW(),NOW())";
mysql_query($query);
}
else
{
include('photos_resize.php');
$query = "INSERT INTO photos (id,num_categorie,photos,date,heure) VALUES ('','$serie','photos/$nom_image',NOW(),NOW())";
mysql_query($query);
}
?>


<?php
//FICHIER PHOTOS_RESIZE.PHP
include("photos_config.php");

//SI ENVOI IMAGE
$file_type = $_FILES['imgfile']['type'];
$file_name = $_FILES['imgfile']['name'];
$file_size = $_FILES['imgfile']['size'];
$file_tmp = $_FILES['imgfile']['tmp_name'];

//VERIFICATION EXTENSION
$ext = strrchr($file_name,'.');
$ext = strtolower($ext);
if (($extlimit == "yes") && (!in_array($ext,$limitedext)))
{
echo "<p class='body_gras_rouge'>Cette extension n'est pas prise en compte.</p><br>";
exit();
}

//OBTENIR EXTENSION
$getExt = explode ('.', $file_name);
$file_ext = $getExt[count($getExt)-1];


//CREER UN NOM AU HASARD
$ThumbWidth = $img_thumb_width;
$rand_name = md5(uniqid(rand(), true));

//GARDER LE TYPE DIMAGE
if($file_size)
{
if($file_type == "image/pjpeg" || $file_type == "image/jpeg")
{
$new_img = imagecreatefromjpeg($file_tmp);
chmod ($new_img, 777);
}
elseif($file_type == "image/x-png" || $file_type == "image/png")
{
$new_img = imagecreatefrompng($file_tmp);
chmod ($new_img, 777);
}
elseif($file_type == "image/gif")
{
$new_img = imagecreatefromgif($file_tmp);
chmod ($new_img, 777);
}

//GARDER LE MEME RATIO POUR LE REIDMENSIONNEMENT
list($width, $height) = getimagesize($file_tmp);
$imgratio=$width/$height;
if ($imgratio>1)
{
$newwidth = $ThumbWidth;
$newheight = $ThumbWidth/$imgratio;
}
else
{
$newheight = $ThumbWidth;
$newwidth = $ThumbWidth*$imgratio;
}

//FONCTION QUI REDIMENSIONNE IMAGE
if (function_exists(imagecreatetruecolor))
{
//création de l'image vierge
$resized_img = imagecreatetruecolor($newwidth,$newheight);
}
else
{
die("<p class='body_gras_rouge'>Erreur: Les libraires GD version 2 doivent êtres diposnibles sur le serveur. Contactez le Webmaster</p>");
}
imagecopyresampled($resized_img, $new_img, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);

//ENREGISTREMENT MESSAGE
$nom_image = "galerie-$rand_name.$file_ext";
ImageJpeg ($resized_img,"$path_thumbs/$nom_image");
ImageDestroy ($resized_img);
ImageDestroy ($new_img);
}

?>

<?php
//FICHIER PHOTOS_CONFIG
//path where to store images
$path_thumbs = "../photos";
$path_big = "../photos/big";


//the new width of the resized image.
$img_thumb_width = 640; // in pixel

//Do you want to limit the extensions of files uploaded (yes/no)
$extlimit = "yes";
//allowed Extensions
$limitedext = array(".jpg",".jpeg");


//check if folders are Writable or not
//please CHOMD them 777
if (!is_writeable($path_thumbs)){
die ("<p class='body_gras_rouge'>Erreur: Le répertoire <b>($path_thumbs)</b> n'existe pas. Contactez le Webmaster.</p>");
}
if (!is_writeable($path_big)){
die ("<p class='body_gras_rouge'>Erreur: Le répertoire <b>($path_big)</b> n'existe pas. Contactez le Webmaster.</p>");
}

?>

Pourtant je n'ai pas de restriction de taille etc...

Je suis sur un serveur dédié OVH.

Il y a til un problème dans le code ?

Merci par avance.

Posté (modifié)

Bonjour,

Il existe dans PHP une option qui limite la taille des fichiers.

Comme tu es chez un hébergeur, ils ont peut être pu modifier cette option pour éviter justement l'upload massif de fichiers trop gros de la part de leurs clients :)

Fais donc un phpinfo() dans ton script pour vérifier la taille de cette variable. Et si c'est de la que vient le probleme, j'ai peur de n'avoir aucune solution.

PS: je me suis aidé de commentcamarche.net pour te répondre :D

Modifié par Nanane
Posté

Bonjour,

Merci pour votre réponse clair et rapide et... vous aviez raison :

upload_max_filesize 2M 2M

Je comprend enfin ! Ouf !

Si quelqu'un aurait la solution ça me dépannerait bien mais je vais essayer de voir avec OVH pour changer ça.

Merci encore.

Posté

Bonjour,

Merci à vous deux, le problème a été réglé j'ia donc édité le php.ini.

A bientot.

Posté

Pas de quoi :D

Donc si j'ai bien saisi, les serveurs dédiés chez ovh laissent l'accès aux fichiers de conf...

Posté

Les serveurs dédiés OVH laisse accès à tout ! c'est "ton" serveur... tu peux faire rm -rf /home si tu veux ! tu es root sur la machine

Mais si on n'y connait rien en admin serveur Linux, il vaut mieux pas jouer si le serveur est dédié à un site crucial ou à héberger des clients ! il y a de l'infogérance pour ça, au hsard celle du Hub ! :whistling:

Pour revenir au sujet initial, j'avais cru voir que c'était vraiment 8M la limite maxi car après c'est Apache (en version 1 en tou cas) qui semblait pédaler dans la semoule...

Par contre j'utilise un autre procédé : j'ai trouvé une toute petite appli Flash avec un bouton "Parcourir" et une barre de progression, ça charge un fichier puis ça appelle un script PHP. On est limité uniquement par le temps maxi d'exécution d'un script (30 sec par défaut ce qui laisse le temps d'envoyer des dizaines de Mo, tout cela bien sûr dépendant de la vitesse d'upload de la personne).

Bon par contre ça oblige à avoir Flash, mais dans mon cas c'ést pour les backoffices de mes sites donc je peux imposer aux clients (qui de toutes façons ne savent ce que c'est).

Seb.

Posté

Je n'y conais rien en hébergeur et j'avais confondu la notion de "serveur dédié" a un service et celle de serveur dédié a un seul "utilisateur" (le locataire)

Sinon pour apache j'ai fait une bref recherche

=> Limiter la taille d'upload de fichiers dans Apache

A verifier donc la valeur par defaut :D

tu peux faire rm -rf /home si tu veux !

on peut meme faire un shutdown? :D

  • 4 semaines plus tard...
Posté
j'ai trouvé une toute petite appli Flash avec un bouton "Parcourir" et une barre de progression, ça charge un fichier puis ça appelle un script PHP. On est limité uniquement par le temps maxi d'exécution d'un script (30 sec par défaut ce qui laisse le temps d'envoyer des dizaines de Mo, tout cela bien sûr dépendant de la vitesse d'upload de la personne).

Bonjour,

Pourrais tu nous indiquer quel est ce Flash et où il est possible de le trouver ?

Merci

Christophe

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...