Upload de 1Go en PHP

Upload de 1Go en PHP - PHP - Programmation

Marsh Posté le 29-12-2010 à 16:17:16    

Bonjour  
 
J'utilise MAMP pour simulé un serveur apache et j'ai essaye depuis 10 jours de faire des envois de fichier de 1Go max.
Voici mon script
 
Upload.php

Code :
  1. <?
  2. ini_set('memory_limit', 80000); // en octets
  3. set_time_limit(60000); // en secondes
  4. // Taille maximum
  5. $MAX_FILE_SIZE = 3;
  6. $post_max_size = "1000000000";
  7. // Dossier de destination du fichier
  8. $folder = "./";
  9. // Tableau array des différents types
  10. // Variables récupérée par methode POST du formulaires
  11. $fname = $HTTP_POST_FILES['fichier']['name'];
  12. $ftype = $HTTP_POST_FILES['fichier']['type'];
  13. $fsize = $HTTP_POST_FILES['fichier']['size'];
  14. $ftmp = $HTTP_POST_FILES['fichier']['tmp_name'];
  15. // Diverses test afin de savoir si :
  16. // Le format de fichier correspond à notre tableau array
  17. if(!in_array($ftype, $allowed_types)){$error = 1;}
  18. // La taille du fichier n'est pas dépassée
  19. if($fize > $MAX_FILE_SIZE){$error = 2;}
  20. // Le fichier n'existe pas déjà
  21. if(file_exists($folder."m_".$fname)){$error = 3;}
  22. // Si tout va bien, c'est bien déroulé
  23. if(copy($ftmp,''.$folder.''.$fname.'')) {$error = 0;}
  24. // Switch servant simplement à la gestion des erreures
  25. switch($error){
  26. case'0':
  27. echo("Fichier correctement envoyé." );
  28. break;
  29. case'1':
  30. echo("Format de fichier incorrecte." );
  31. break;
  32. case'2':
  33. echo("Fichier trop volumineux." );
  34. break;
  35. case'3':
  36. echo("Fichier déjà existant." );
  37. break;
  38. }
  39. ?>


 
index.html

Code :
  1. <p align="center"><form name="upload" enctype="multipart/form-data" method="post" action="upload.php">
  2.       <input type="file" name="file" size="100">
  3.       <br><br>
  4.        <input type="submit" name="bouton_submit" value="Envoyer le fichier">
  5.         </p></form>


 
Phpinfo
http://img521.imageshack.us/img521/8271/capturedcran20101229161.png
 
A chaque fois que jessai denvoyer un fichier j'ai une erreur .
Quelqu'un peut il m'aider ?
 
Merci d'avance

Reply

Marsh Posté le 29-12-2010 à 16:17:16   

Reply

Marsh Posté le 30-12-2010 à 16:54:22    

Regarde aussi du côté de la directive post_max_size.
Ton formulaire est envoyé en POST et il me semble qu'il faut que cette directive ait une valeur supérieur à upload_max_filesize.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-12-2010 à 18:06:31    

duffman39 a écrit :

A chaque fois que jessai denvoyer un fichier j'ai une erreur .
Quelqu'un peut il m'aider ?


 
Comme on te l'a dit dans un autre topic (tu vas en créer combien ? )
 
C'est débile de vouloir uploader 1 Go par un POST. Y a 150 timeout de toute sorte qui vont t'en empecher à commencer par le temps d'execution max d'un script.
 
Exemple : 1 Go uploadé à 1 MB/s soient 1000 sec donc ton script doit tourner pendant 16 minutes  :pt1cable:


Message édité par smaragdus le 30-12-2010 à 18:07:53
Reply

Marsh Posté le 30-12-2010 à 18:59:02    

Ouai c'est pas faux, ya le FTP comme protocole pas mal aussi :o


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 30-12-2010 à 19:21:30    

A la base c'est se qu'il avait été suggéré de passer pour du ftp mais mon directeur commercial ne veut pas en entendre parler.
Donc il ma dis si ça marche avec megaupload ca doit marcher avec du php, mais bon.
 
Ya til possibilité de changer le timeout avec le php.ini
Ou si la méthode post n'est pas approprié . Y a t'il une autre possibilité autres que le ftp biensur.
Merci d'avance.

Reply

Marsh Posté le 30-12-2010 à 23:20:34    

1 Go c'est 1024M, pas 1000...
 
Tu dois changer la directive max_execution_time et la mettre à 0 (infini)
Change le post_max_size et mets le à 1024M aussi

Message cité 1 fois
Message édité par CyberDenix le 30-12-2010 à 23:22:12

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 31-12-2010 à 12:22:58    

duffman39 a écrit :

A la base c'est se qu'il avait été suggéré de passer pour du ftp mais mon directeur commercial ne veut pas en entendre parler.
Donc il ma dis si ça marche avec megaupload ca doit marcher avec du php, mais bon.


 
Ah... on le reconnait bien l'argument de marketeux bidon et incompétent ("si ça marche avec XXXX alors ça doit marcher avec YYYY" )  :lol:  
 

Citation :

Ou si la méthode post n'est pas approprié . Y a t'il une autre possibilité autres que le ftp biensur.


 
Oui : voir mon post sur l'autre thread que tu avais créé

Reply

Marsh Posté le 31-12-2010 à 12:29:18    

CyberDenix a écrit :

1 Go c'est 1024M, pas 1000...


Non :o
Un Go, c'est 1000 Mo.  
C'est 1 Gio qui vaut 1024 Mio.
 

Citation :

Tu dois changer la directive max_execution_time et la mettre à 0 (infini)


Excellent conseil pour faire planter un serveur  
 
 

Reply

Marsh Posté le 31-12-2010 à 13:51:34    

duffman39 a écrit :

A la base c'est se qu'il avait été suggéré de passer pour du ftp mais mon directeur commercial ne veut pas en entendre parler.
Donc il ma dis si ça marche avec megaupload ca doit marcher avec du php, mais bon.
 
Ya til possibilité de changer le timeout avec le php.ini
Ou si la méthode post n'est pas approprié . Y a t'il une autre possibilité autres que le ftp biensur.
Merci d'avance.


upload avec flash [:spamafote]


---------------
Blablaté par Harko
Reply

Marsh Posté le 31-12-2010 à 14:51:12    

smaragdus a écrit :


Non :o
Un Go, c'est 1000 Mo.  
C'est 1 Gio qui vaut 1024 Mio.


 
lol

Reply

Marsh Posté le 31-12-2010 à 14:51:12   

Reply

Marsh Posté le 31-12-2010 à 16:46:06    


 
tl;dr


---------------
Gamertag: CoteBlack YeLL
Reply

Marsh Posté le 31-12-2010 à 18:32:44    

Et si on commençait par le début ?
 
C'est quoi le message d'erreur ?


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 31-12-2010 à 18:48:15    

Je ne dis pas que c'est la solution avec Apache, mais j'ai eu exactement ce problème il y a deux jours avec Nginx et mettre "1000m" au lieu de "1000M" dans la configuration était la solution.
 
En tout cas ça ne coûte pas cher de tester [:cosmoschtroumpf]  
 
Sinon, par pitié, ne préconisez pas d'utiliser ftp  [:tinostar]

Reply

Marsh Posté le 01-01-2011 à 15:42:43    

ce que j'ai comme erreur c'est "Format de fichier incorrecte."
Du coup j'ai mi les types mime de correspondant dans le script mais la meme erreur revient

Reply

Marsh Posté le 01-01-2011 à 21:14:50    

smaragdus a écrit :


Non :o
Un Go, c'est 1000 Mo.  
C'est 1 Gio qui vaut 1024 Mio.


 
Go = Giga Octet
 

smaragdus a écrit :


Citation :

Tu dois changer la directive max_execution_time et la mettre à 0 (infini)


Excellent conseil pour faire planter un serveur


 
Je ne vois pas en quoi cette directive ferait planter le serveur, sauf à coder un while (true); .


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 01-01-2011 à 22:52:36    

CyberDenix a écrit :

 

Go = Giga Octet

 


 

Exactement ( http://en.wikipedia.org/wiki/Octet_(computing) ):

 

1 gibioctet (Gio) = 2^30 octets = 1024 Mio
1 gigaoctet (Go) = 10^9 octets = 1000 Mo

 
CyberDenix a écrit :

 

Je ne vois pas en quoi cette directive ferait planter le serveur, sauf à coder un while (true); .

 

Dans ce cas pourquoi penses-tu que les dev de PHP aient créé cette config? Pour faire chier ceux qui ne savent pas la modifier? Ou peut-être parce que c'est une porte d'entrée idéale pour les DoS?

Message cité 1 fois
Message édité par esox_ch le 01-01-2011 à 22:52:53

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 02-01-2011 à 19:32:31    

T'es de mauvaise foi quand même...
http://fr.wikipedia.org/wiki/Octet [...] ditionnels
 
Cf le bloc "usage traditionnel", qui reste la référence sur les systèmes Windows et Unix, autrement dit 99.999% des systèmes de la planète. Quand on connait la nature des octets, ou mots de huit bits, c'est à dire un ensemble de deux valeurs (ou puissance de 2), on comprend vite que penser utiliser un système en base 10 c'est une infinie connerie.
 
 

esox_ch a écrit :

Dans ce cas pourquoi penses-tu que les dev de PHP aient créé cette config? Pour faire chier ceux qui ne savent pas la modifier? Ou peut-être parce que c'est une porte d'entrée idéale pour les DoS?


 
Mince, alors pour empêcher une attaque DDos, il suffit d'activer ce paramètre ?
Ils sont vraiment cons les devs de Google, Paypal, Mastercard, ...  :sweat:  
 
Ou alors ça n'a peut-être rien à voir...  :lol:  
http://www.cisco.com/web/about/ac1 [...] tacks.html
 


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 02-01-2011 à 20:17:14    

CyberDenix a écrit :

T'es de mauvaise foi quand même...
http://fr.wikipedia.org/wiki/Octet [...] ditionnels
 
Cf le bloc "usage traditionnel", qui reste la référence sur les systèmes Windows et Unix, autrement dit 99.999% des systèmes de la planète. Quand on connait la nature des octets, ou mots de huit bits, c'est à dire un ensemble de deux valeurs (ou puissance de 2), on comprend vite que penser utiliser un système en base 10 c'est une infinie connerie.


 
Je suis absolument pas de mauvaise foi. J'ai pris WP "par defaut" car c'est le reglage de mon browser... Et je persiste à dire que ce n'est pas parce que qqch est "usuel" que c'est forcément juste ou vrai. Il suffi que tu regardes le bordel que ces histoires de Gio VS Go sont en train de faire avec les capacité des HDD (y a un article là dessus sur hd.fr justement) pour se rendre compte que tout le monde n'est pas aussi clairvoyant que toi.
 

CyberDenix a écrit :


 
Mince, alors pour empêcher une attaque DDos, il suffit d'activer ce paramètre ?
Ils sont vraiment cons les devs de Google, Paypal, Mastercard, ...  :sweat:  
 
Ou alors ça n'a peut-être rien à voir...  :lol:  
http://www.cisco.com/web/about/ac1 [...] tacks.html
 


 
Mais bon sang arrête de jouer au plus con avec tout le monde sur le forum, on a compris! Ou alors tu vas venir nous expliquer que tous les DoS au monde ont été effectués de la même manière hein?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 02-01-2011 à 21:20:51    

De toute façon une attaque DDoS, c'est une attaque dans le dos !   :lol:


Message édité par CyberDenix le 02-01-2011 à 21:21:16

---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 03-01-2011 à 09:53:49    

CyberDenix a écrit :

T'es de mauvaise foi quand même...
http://fr.wikipedia.org/wiki/Octet [...] ditionnels
 
Cf le bloc "usage traditionnel", qui reste la référence sur les systèmes Windows et Unix, autrement dit 99.999% des systèmes de la planète. Quand on connait la nature des octets, ou mots de huit bits, c'est à dire un ensemble de deux valeurs (ou puissance de 2), on comprend vite que penser utiliser un système en base 10 c'est une infinie connerie.
 
 


 

CyberDenix a écrit :


 
Mince, alors pour empêcher une attaque DDos, il suffit d'activer ce paramètre ?
Ils sont vraiment cons les devs de Google, Paypal, Mastercard, ...  :sweat:  
 
Ou alors ça n'a peut-être rien à voir...  :lol:  
http://www.cisco.com/web/about/ac1 [...] tacks.html
 


 
Il y a plusieurs façon de cambrioler une maison (défonçage de porte, ruse, coupure de courant pour désactiver les alarmes....), ce n'est pas une raison pour laisser la porte ouverte en se disant que de toute façon il y a plusieurs façon de te cambrioler.
C'est le même principe, mettre une valeur infinie sur une possibilité d'upload est bien plus risqué que de mettre une valeur haute

Reply

Marsh Posté le 03-01-2011 à 13:53:49    

CyberDenix a écrit :


 
Je ne vois pas en quoi cette directive ferait planter le serveur, sauf à coder un while (true); .


 
Pas besoin de while true, une boucle longue suffit par remplir la mémoire vu qu'il y a toujours des fuites de mémoires.

Reply

Marsh Posté le 03-01-2011 à 13:55:58    

CyberDenix a écrit :

T'es de mauvaise foi quand même...
http://fr.wikipedia.org/wiki/Octet [...] ditionnels
 
Cf le bloc "usage traditionnel", qui reste la référence sur les systèmes Windows et Unix, autrement dit 99.999% des systèmes de la planète. Quand on connait la nature des octets, ou mots de huit bits, c'est à dire un ensemble de deux valeurs (ou puissance de 2), on comprend vite que penser utiliser un système en base 10 c'est une infinie connerie.
 


 
A part que toutes les unités dans le monde utilisent un système décimal.
 
T'es aussi rétrogrades que ceux qui utilisent encore le système impérial  :lol:  

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed