PHP - Problème upload fichier > 8Mo
Résolu/Fermé
bobox87
Messages postés
32
Date d'inscription
lundi 6 septembre 2010
Statut
Membre
Dernière intervention
25 juillet 2011
-
Modifié par bobox87 le 10/09/2010 à 22:00
nando - 5 mars 2013 à 22:46
nando - 5 mars 2013 à 22:46
11 réponses
bobox87
Messages postés
32
Date d'inscription
lundi 6 septembre 2010
Statut
Membre
Dernière intervention
25 juillet 2011
1
10 sept. 2010 à 22:12
10 sept. 2010 à 22:12
En fait dans mon php.ini j'ai une ligne:
Donc j'imagine que c'est une limitation de PHP? Mais dans ce cas comment ne pas afficher tous les Undefined index: si l'upload est > à 8 Mo ? car c'est pas terrible pour la sécurité ça !
post_max_size = 8M
Donc j'imagine que c'est une limitation de PHP? Mais dans ce cas comment ne pas afficher tous les Undefined index: si l'upload est > à 8 Mo ? car c'est pas terrible pour la sécurité ça !
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
10 sept. 2010 à 23:10
10 sept. 2010 à 23:10
Salut !
Je pense que le php.ini n'a rien à voir avec cela.
En PHP, une chaine de caractère ne peut contenir que 8 quelque chose (Ko, Mo, ...); Le fichier est géré par ta page PHP donc ne peut dépasser 8 unités.
De même pour les fonctions de lecture de fichier, etc...
Une solution, dont je ne suis pas sûr, est l'upload par Ajax (PAS envoi par iframe). Je n'ai jamais trouvé de code valide pour cela.
Bonne recherche !
Je pense que le php.ini n'a rien à voir avec cela.
En PHP, une chaine de caractère ne peut contenir que 8 quelque chose (Ko, Mo, ...); Le fichier est géré par ta page PHP donc ne peut dépasser 8 unités.
De même pour les fonctions de lecture de fichier, etc...
Une solution, dont je ne suis pas sûr, est l'upload par Ajax (PAS envoi par iframe). Je n'ai jamais trouvé de code valide pour cela.
Bonne recherche !
bobox87
Messages postés
32
Date d'inscription
lundi 6 septembre 2010
Statut
Membre
Dernière intervention
25 juillet 2011
1
11 sept. 2010 à 11:48
11 sept. 2010 à 11:48
Merci mais comment faire pour ne pas afficher tous ces messages d'erreurs c'est ça que je voudrais éviter !
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
11 sept. 2010 à 12:33
11 sept. 2010 à 12:33
Aah... Ca, c'est plus simple !
D'abord n'oublie pas de signaler que le fihcier est trop gros, après, tu as deux solutions :
- Il n'y a qu'une seule fonction qui peux provoquer une erreur, non ? move_uploaded_file(); Lors de son appel, même autour d'un 'if', remplace move_uploaded_file() par @move_uploaded_file(); Cela reviens strictement au même, mais interdit à la fonction d'émettre des messages d'erreur. Dans le cas où d'autres focntions renvoient des erreurs, rajoute aussi un arobase (@) devant, il n'y aura plus de message d'erreur.
- Si cela ne fonctionne pas, il faut voir error_reporting(). Par exemple, error_reporting(0) empêchera l'affichage d'erreur, mais sur n'importe quelle fonction. Si, par après, tu veux de nouveau les erreurs (après l'upload dans la page), il faut renseigner un autre paramètre. Va voir la documentation PHP sur cette fonction.
Bye ;)
D'abord n'oublie pas de signaler que le fihcier est trop gros, après, tu as deux solutions :
- Il n'y a qu'une seule fonction qui peux provoquer une erreur, non ? move_uploaded_file(); Lors de son appel, même autour d'un 'if', remplace move_uploaded_file() par @move_uploaded_file(); Cela reviens strictement au même, mais interdit à la fonction d'émettre des messages d'erreur. Dans le cas où d'autres focntions renvoient des erreurs, rajoute aussi un arobase (@) devant, il n'y aura plus de message d'erreur.
- Si cela ne fonctionne pas, il faut voir error_reporting(). Par exemple, error_reporting(0) empêchera l'affichage d'erreur, mais sur n'importe quelle fonction. Si, par après, tu veux de nouveau les erreurs (après l'upload dans la page), il faut renseigner un autre paramètre. Va voir la documentation PHP sur cette fonction.
Bye ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bobox87
Messages postés
32
Date d'inscription
lundi 6 septembre 2010
Statut
Membre
Dernière intervention
25 juillet 2011
1
11 sept. 2010 à 13:58
11 sept. 2010 à 13:58
Bon j'ai essayé plusieurs trucs mais ça marche pas.
De toute manière un script se coupe tout seul au bout de 30 sec il me semble (je crois que c'est réglable dans le php.ini).
Là je viens d'essayer d'uploader sur un site un fichier de 10Mo, ça mouline pendant 2 min et il ne se passe rien, la page se rafraichit mais ça n'affiche pas d'erreur.
Moi je suis en local donc le transfert est hyper rapide, mais quand il sera en ligne cela prendra du temps d'uploader un fichier supérieur à 8 Mo.
Donc ça devrait être bon quand même ce que j'ai fait ?
De toute manière un script se coupe tout seul au bout de 30 sec il me semble (je crois que c'est réglable dans le php.ini).
Là je viens d'essayer d'uploader sur un site un fichier de 10Mo, ça mouline pendant 2 min et il ne se passe rien, la page se rafraichit mais ça n'affiche pas d'erreur.
Moi je suis en local donc le transfert est hyper rapide, mais quand il sera en ligne cela prendra du temps d'uploader un fichier supérieur à 8 Mo.
Donc ça devrait être bon quand même ce que j'ai fait ?
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
11 sept. 2010 à 15:00
11 sept. 2010 à 15:00
Pour le fichier de 10 Mo, je pense que tu peux oublier (sauf si par miracle l'upload par Ajax fonctionne).
Puis, je t'ai expliqué comment éviter les erreurs.
Maintenant, pour que ton script puisse durer plus que 30 secondes, en tout début de page, écrit cette ligne :
Bye ;)
Puis, je t'ai expliqué comment éviter les erreurs.
Maintenant, pour que ton script puisse durer plus que 30 secondes, en tout début de page, écrit cette ligne :
set_time_limit(0);Et, pour éviter que les uploaders n'ayent une page blanche pendant un temps fou, utiliser l'envoi par iframe (attention, ce n'est pas la même chose que l'upload par Ajax, contrairement à ce que beaucoup pensent).
Bye ;)
bobox87
Messages postés
32
Date d'inscription
lundi 6 septembre 2010
Statut
Membre
Dernière intervention
25 juillet 2011
1
11 sept. 2010 à 19:38
11 sept. 2010 à 19:38
En fait je me rends compte que me suis mal exprimé.
Je ne veux surtout pas que les utilisateurs envoient des fichiers de plus de 8Mo (j'ai placé ma limite à 1 Mo).
Toutes les vérifications dans le script php, notamment $_FILES['produit_photo']['size'], fonctionnent parfaitement lorsque le fichier fait moins de 8Mo.
Dès qu'il fait plus de 8Mo j'ai l'impression que le script fait comme si tous les champ du formulaire étaient vides, il m'affiche toutes les erreurs possibles gérées par mon script php notamment le fait que le fichier est trop gros ou pas avec la bonne extension. Mais il m'affiche aussi des Undefined index avec le nom des champ du formulaire.
J'ai essayé de placer error_reporting(0) ou @move_uploaded_file() (d'ailleurs le move_uploaded_file est lancé s'il n'y a aucune erreur après l'insert into dans la bdd). Malheureusement ça ne marche pas.
Mais à mon avis je n'aurais plus d'erreur une fois en ligne, l'upload prendra trop de temps au delà de 8mo et se coupera tout seul.
Je ne veux surtout pas que les utilisateurs envoient des fichiers de plus de 8Mo (j'ai placé ma limite à 1 Mo).
Toutes les vérifications dans le script php, notamment $_FILES['produit_photo']['size'], fonctionnent parfaitement lorsque le fichier fait moins de 8Mo.
Dès qu'il fait plus de 8Mo j'ai l'impression que le script fait comme si tous les champ du formulaire étaient vides, il m'affiche toutes les erreurs possibles gérées par mon script php notamment le fait que le fichier est trop gros ou pas avec la bonne extension. Mais il m'affiche aussi des Undefined index avec le nom des champ du formulaire.
J'ai essayé de placer error_reporting(0) ou @move_uploaded_file() (d'ailleurs le move_uploaded_file est lancé s'il n'y a aucune erreur après l'insert into dans la bdd). Malheureusement ça ne marche pas.
Mais à mon avis je n'aurais plus d'erreur une fois en ligne, l'upload prendra trop de temps au delà de 8mo et se coupera tout seul.
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
11 sept. 2010 à 22:35
11 sept. 2010 à 22:35
Hmm... La j'ai un peu moins à dire.
Le script se coupera tout seul si tu n'as pas établi de limite (set_time_limit).
Par contre, si cela ne fonctionne pas en local, ca m'étonnerait vraiment que cela fonctionne en public.
Il faut trouver une fonction qui annule carrément le chargement à ue certaine limite. Je n'en connais pas...
Ce qu'il reste à faire, c'est chercher. J'ai déjà trouvé ce post :
https://forums.commentcamarche.net/forum/affich-7661677-php-upload-max-filesize
Qui cite quelques pistes explorables.
Pour continuer à chercher, j'ai trouvé ce post ici :
https://www.google.be/?gws_rd=ssl#hl=fr&q=php+upload+de+plus+de+8+mo+plante
Ah oui, essaie de ne pas toucher à php.ini, parce que sur un hébergeur tu ne pourras pas le modifier.
Bye ;)
Le script se coupera tout seul si tu n'as pas établi de limite (set_time_limit).
Par contre, si cela ne fonctionne pas en local, ca m'étonnerait vraiment que cela fonctionne en public.
Il faut trouver une fonction qui annule carrément le chargement à ue certaine limite. Je n'en connais pas...
Ce qu'il reste à faire, c'est chercher. J'ai déjà trouvé ce post :
https://forums.commentcamarche.net/forum/affich-7661677-php-upload-max-filesize
Qui cite quelques pistes explorables.
Pour continuer à chercher, j'ai trouvé ce post ici :
https://www.google.be/?gws_rd=ssl#hl=fr&q=php+upload+de+plus+de+8+mo+plante
Ah oui, essaie de ne pas toucher à php.ini, parce que sur un hébergeur tu ne pourras pas le modifier.
Bye ;)
bobox87
Messages postés
32
Date d'inscription
lundi 6 septembre 2010
Statut
Membre
Dernière intervention
25 juillet 2011
1
Modifié par bobox87 le 12/09/2010 à 01:10
Modifié par bobox87 le 12/09/2010 à 01:10
Oui j'ai essayé avec le le upload_max_size mais nan ça veut pas.
Bref, j'ai pu mettre mon script en ligne sur le site d'un ami, et la ouf j'ai pas tous les undefined index, ça mouline pendant 2 min et il ne se passe rien en retour pas de message d'erreur. Je préfère ça, problème résolu.
Merci pour ton aide ;)
Bref, j'ai pu mettre mon script en ligne sur le site d'un ami, et la ouf j'ai pas tous les undefined index, ça mouline pendant 2 min et il ne se passe rien en retour pas de message d'erreur. Je préfère ça, problème résolu.
Merci pour ton aide ;)
Bilow
Messages postés
1014
Date d'inscription
samedi 21 août 2010
Statut
Membre
Dernière intervention
2 août 2015
117
12 sept. 2010 à 11:39
12 sept. 2010 à 11:39
Salut !
Normalement avec error_reporting, tu ne devrait avoir aucune erreur. Enfin bon.
De rien ;)
Normalement avec error_reporting, tu ne devrait avoir aucune erreur. Enfin bon.
De rien ;)