OVH Community, votre nouvel espace communautaire.

Upload d'un fichier de 14Mo en php


alex_81130
30/06/2014, 04h07
Bonjour, et merci pour cette réponse.

J'ai donc modifié le .htaccess (celui qui est à la racine, au même niveau que le www). Il a donc maintenant cette tête là :

----------------------------------------------
SetEnv PHP_VER 5
SetEnv REGISTER_GLOBALS 0
SetEnv MAGIC_QUOTES 0
SetEnv log_errors 1
SetEnv display_errors 1
LimitRequestBody 67108864

Options -Indexes
----------------------------------------------
Mes tests ne sont pas concluants, j'ai toujours le même souci ("$_FILES['file']" n'est pas défini quand mon script php est exécuté). J'ai essayé plusieurs choses, de rajouter un "SetEnv" devant, de le déplacer à différents endroits du fichier, de mettre 0 en valeur, mais rien à faire, le comportement est exactement toujours le même...

De mémoire il n'y a pas d'actions particulière à faire pour que les modifs du htaccess soient prises en compte si?? C'est pris à chaud instantanément?

Je n'ai pas réussi à vérifier que la valeur était bien prise en compte, en fouillant, j'ai vu qu'il était normal que ini_get() et get_cfg_var() ne fonctionnent pas, et je n'ai pas trouvé de solution autre...

une idée??

Merci !

pl.lamballais
09/06/2014, 21h39
Bon, je viens de faire quelques essais. J'ai un "pro" avec un sqlprivé et pas mal de zones avec upload. J'ai un suivi de téléchargement (appel cyclique d'une page de suivi en PHP) ce qui me permet d'avoir une barre de progression.

Essai 1: fichier de 42,6Mo. Blocage à 55% donc à environ 23Mo envoyé. Bizarrement, ça plante l'envoi mais ça "submit" quand même sur la page suivante avec une particularité (cf plus bas)
Essai 2: fichier de 26Mo. Tout passe mais.... même problème qu'au premier essai.
Essai 3: fichier de 5Mà, envoi nickel, aucun problème

Je fais l'upload à partir d'une page qui a un formulaire. Or, à l'arrivée dans la page suivante, dans l'Essai 1 et le 2, je me suis pris plein d'erreurs PHP m'indiquant que j'ai plein de variables pas définies: en gros, les données des champs de la première page ne sont pas transmis. Cela voudrait donc dire que le "POST" est trop gros et qu'en fin de compte, non seulement je n'ai pas reçu le fichier (dans le 2 j'ai été à 100%, je n'ai pas reçu le fichier) mais qu'en plus ça perturbe les autres éléments du POST. Mais si ça se trouve, j'ai reçu le fichier; mais comme je dois le recopier quelque part et que pour ça j'utilise $_FILE et que les variables sont bousillé, je peux pas le recopier...

Je me suis donc dit que sans doute PHP n'était pas en cause car moi aussi j'ai 64Mo de limite. En fait il semble qu'il y ait une limite: LimitRequestBody qui fait parti des paramètres d'Apache. Par contre j'ai essayé de lire ça en PHP mais les fonctions que j'ai trouvé ne retournent rien.

Quelques infos ici:
httpd.apache.org/docs/current/mod/core.html#limitrequestbody

Modifier le .htaccess?

Pas le temps de tester + que ça mais si tu essayes et que ça marche, merci de retourner l'info.

A++
FL

alex_81130
11/05/2014, 15h01
Bonjour,

J'ai un souci lors d'un upload de fichier en php, sur des fichiers visiblement trop gros (un fichier de 10Mo, ça passe, un fichier de 14 Mo, ça passe pas).

En fait dans ce cas là, mon script PHP est appelée, mais avec "$_FILES['file']" qui n'est pas définit.

Pour voir si mon problème ne venait pas du code, j'ai téléchargé une classe d'upload existante :
- http://php.developpez.com/telecharge...on-des-erreurs

J'ai deux hébergements chez OVH, une mutualisée "Perso", et une mutualisée "Pro". Mon test avec cette classe PHP fonctionne sur mon offre perso, mais pas sur la pro. Sur la pro, toujours avec mon fichier de 14Mo, la classe m'affiche un message d'erreur du genre :
"La taille maximum autorisée par le serveur est dépassée (64Mo)".

64M, c'est la valeur de mon max_upload_filesize, donc, c'est cohérent, par contre pourquoi mon fichier de 14Mo se retrouve bloqué???

J'ai donc comparé les infos php des deux serveurs (Je ne suis pas sûr que ce test soit pertinent, étant donné que la version des
deux serveurs n'est pas la même, mais je commence à manquer de pistes ), voilà ce que je relève comme différences (je n'ai pas noté toutes les différences, juste celles qui me semblaient utiles) :

Version :
pro : 5.4.27
perso : 5.3.16

max_execution_time :
pro : 300
perso : 120

max_input_time :
pro : -1
perso : 60

max_input_vars :
pro : 16000
perso : 2000

memory_limit :
pro : 512M
perso : 128M

error_reporting :
pro : 32759
perso : 30711

serialize_precision :
pro : 17
perso : 100

session.gc_divisor :
pro : 100
perso : 1000

session.use_only_cookies :
pro : on
perso : off

J'ai également de valeurs présentes uniquement sur le pro :
zend.detect_unicode On On
zend.multibyte Off Off
zend.script_encoding no value no value

enable_post_data_reading On On

session.upload_progress.cleanup On On
session.upload_progress.enabled On On
session.upload_progress.freq 1% 1%
session.upload_progress.min_freq 1 1
session.upload_progress.name PHP_SESSION_UPLOAD_PROGRESS PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix upload_progress_ upload_progress_

Opcode Caching Up and Running
Optimization Enabled
Startup OK
Shared memory model mmap
Cache hits 2119697
Cache misses 111172
Used memory 1073461864
Free memory 16
Wasted memory 279944
Interned Strings Used memory 4194280
Interned Strings Free memory 24
Cached scripts 20043
Cached keys 21568
Max keys 32531
OOM restarts 0
Hash keys restarts 0
Manual restarts 0
opcache.blacklist_filename no value no value
opcache.consistency_checks 0 0
opcache.dups_fix Off Off
opcache.enable On On
opcache.enable_cli Off Off
opcache.enable_file_override Off Off
opcache.error_log no value no value
opcache.fast_shutdown 0 0
opcache.file_update_protection 2 2
opcache.force_restart_timeout 180 180
opcache.inherited_hack On On
opcache.interned_strings_buffer 4 4
opcache.load_comments 1 1
opcache.log_verbosity_level 1 1
opcache.max_accelerated_files 32000 32000
opcache.max_file_size 0 0
opcache.max_wasted_percentage 5 5
opcache.memory_consumption 1024 1024
opcache.optimization_level 0x7fffffef 0x7fffffef
opcache.preferred_memory_model no value no value
opcache.protect_memory 0 0
opcache.restrict_api /home/ovh/fpm5.4/opcache-status.php /home/ovh/fpm5.4/opcache-status.php
opcache.revalidate_freq 2 2
opcache.revalidate_path Off Off
opcache.save_comments 1 1
opcache.use_cwd On On
opcache.validate_timestamps On On

Et des valeurs présentes uniquement sur le perso
allow_call_time_pass_reference On On
register_globals Off Off
register_long_arrays On On
safe_mode Off Off
safe_mode_exec_dir /home/ /home/
safe_mode_gid Off Off
safe_mode_include_dir no value no value

memcached support enabled
Version 1.0.2
libmemcached version 0.40
Session support yes
igbinary support no

J'avoue que la plupart de ces options ne me parlent pas du tout, mais pour celles qui me parlent, je ne vois rien de choquant !

Des idées?

Merci !