Problème upload bloqué
... / Problème upload bloqué
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

Problème upload bloqué

Par
KarimY
Créé le 2020-05-08 16:47:50 (edited on 2024-09-04 13:39:08) dans Hébergement Web-old

Bonjour,

On a mis en place un script d'upload qui envoi le fichier via ajax. Tout fonctionnait normalement jusqu'à ce qu'on décide d'uploader un fichier plus grand 200~300Mo. La on a l'upload qui se bloque/ne progresse pas. Et on a l'erreur **413 Request Entity Too Large**
On a évidemment augmenter les valeurs pour dans le user.ini pour couvrir cela mais cela n'a rien changé
```
upload_max_filesize=512M
post_max_size=512M
```

Avec des fichiers plus petit 77Mo l'upload marche normalement


36 réponses ( Latest reply on 2022-09-11 15:01:05 Par
LudovicB7
)

il y a une limite sur un mutualisé, 130 Mo par défaut su Ovh
vérifie avec un phpinfo() si tes valeurs .user.ini sont prises en compte

il me semble avoir testé 256M


il y a une limite sur un mutualisé, 130 Mo par défaut su Ovh

Oui et c'est en recherchant sur ce forum que j'ai vu qu'on pouvait les modifié avec un fichier .user.ini. Et effectivement les valeurs dans phpinfo sont ceux du fichier

je le suis mal exprimé, le défaut est de 130Mo
mais le maxi je ne le connais, j'ai noté avoir testé 256M

Je suis descendu a 256M et j'ai essayé avec un fichier de 200Mo toujours le même erreur

je n'ai pas de souci



`.user.ini`:
```text
; La taille maximale d'un fichier téléchargé
upload_max_filesize = 512M

; taille maximale de publication, affecte également le téléchargement de fichier
post_max_size = 512M
```

`3584M` ok
`4096M` KO


; La taille maximale d'un fichier téléchargé
upload_max_filesize = 512M

; taille maximale de publication, affecte également le téléchargement de fichier
post_max_size = 512M


J'ai fait la même config quand j'ai publié posé le problème. Ce qui me semble bizarre c'est que si le code ne fonctionnait pas l'upload ne fonctionnerait tout simplement pas peu importe la taille du fichier ou le format du fichier.
Avec un fichier de 70Mo ce la marche avec un autre de 200Mo il ne marche pas. Ce pourrait-il qu'ovh bloque cela intentionnelement? pourant j'ai aussi éssayé de désactiver le firewall

> J'ai fait la même config

j'aurai tendance à dire non, à moins que **TON** phpinfo n'indique pas comme **_user\_ini.filename_** la valeur `.user.ini`

> j'ai aussi éssayé de désactiver le firewall

le meilleur moyen d'avoir des soucis... ça n'en est pas un et comment l'as tu désactivé?
c'est vérifié dans `.ovhconfig`?


j'aurai tendance à dire non, à moins que TON phpinfo n'indique pas comme user_ini.filename la valeur .user.ini

En fait c'est le cas


J'ai désactiver dans le manager. Et aussi vérifier dans le fichier .ovhconfig
```
http.firewall=none
```

ok, alors je ne vois pas facteur bloquant

Bonjour,


upload qui envoi le fichier via ajax

votre script envoie ça comment, de manière exacte ?

Car je pense que vous vous prenez une limite définie sur le proxy frontale du mutu.

Si vous faite le même upload mais avec un script en pure PHP ?

Cordialement, janus57


votre script envoie ça comment, de manière exacte ?

En utilisant http://malsup.com/jquery/form/ JQueryForm
```
$('#upload').ajaxSubmit({
dataType: 'json',
beforeSubmit: function () {
$('.progress-bar').width('0%');
},
uploadProgress: function (ev, position, total, percentageComplete) {
$('#submitbtn').val('Upload en cours');
var progressPercent = (ev.loaded / (ev.total / 100)) + '%';
$('.progress-bar').css('width', progressPercent);
},
success: function (data) {
//UPLOAD SUCCESS
},
resetForm: true
});
```

> une limite définie sur le proxy frontale du mutu.

laquelle?

Bonjour,


laquelle?

si le proxy est toujours un nginx frontale il y a une directive "client_max_body_size" et/ou "client_body_timeout " qui peut interférer.

@KarimY : possible d'avoir un exemple en ligne ?
Note : N'étant pas un dev je comprend rien à votre bout de code et surtout je vois pas comment est fait l'upload vers le serveur dans le bout de code donnée.

Cordialement, janus57


comment est fait l'upload vers le serveur dans le bout de code donnée.

En fait c'est comme si on envoyait juste un formulaire avec ces données mais sans rechargé la page.

Pour ce qui est du traitement côté backend
```
if (!empty($_FILES)) {
if (is_uploaded_file($_FILES['uploadfile']['tmp_name'])) {
$ext = pathinfo($_FILES['uploadfile']['name'], PATHINFO_EXTENSION);
$unique_name = sha1(mt_rand(1, 9999) . uniqid()) . time() . '.' . $ext;
$source_path = $_FILES['uploadfile']['tmp_name'];
$target_path = WWW_ROOT . 'img/videos/' . $unique_name;
if (move_uploaded_file($source_path, $target_path)) {
$data['content'] = $unique_name;
} else {
$data['error'] = true;
$data['content'] = 'Erreur upload';
}
} else {
$data['error'] = true;
$data['content'] = 'Erreur upload';
}
}
```


@KarimY : possible d'avoir un exemple en ligne ?


Oui, j'ai fait en sorte qu'elle soit accessible sans authentification pour le moment
http://intranet.logenord.com/videos/ajout

Bonjour,

après quelques test la limite se trouve vers les 128M (comme upload_max_filesize qui est à 128M par défaut).

Du coup je crains que OVH est harmonisé la limite du proxy frontale avec la limite par défaut de PHP qu'il ont mis en place.

Du coup je pense que même avec un formulaire traditionnel un fichier de 128M+ ne passera pas si c'est bien une limite imposé sur le frontale.

Cordialement, janus57


Du coup je crains que OVH est harmonisé la limite du proxy frontale avec la limite par défaut de PHP qu'il ont mis en place.


Donc la configuration avec .user.ini ne changera rien, la limite sera toujours de 128M. pourtant @kyodev a dit qu'il n'avait pas de souci

3584M ok
4096M KO


3584M c'est pas 3+Go

j'ai juste regardé phpinfo... :(

Donc c'est le proxy frontal qui bloque?

Bonjour,

Perso c'est la seule explication, car j'ai généré des fichier "dummy" de 127M et 128M, le 127M est traité par votre script PHP et je vois un retour en HTTP 200 et le 128M je vois un retour en HTTP 413 avant même la fin de l'upload (capture wireshark).

Cordialement, janus57

Bonjour.
Je suis tombé sur vos échanges, ayant un problème similaire, voire pire puisque ma limite semble être à 10Mo.
Mon site est codé manuellement (pas de CMS).
Mon code est assez simple et fait intervenir HTML et PHP, selon la méthode suivante :
https://www.w3schools.com/php/php_file_upload.asp
J'ai le retour suivant (erreur 413) si le fichier fait 10.8Mo, alors que l'upload réussit avec avec 9.5Mo :
Request Entity Too Large
The requested resource does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit.

J'ai l'impression d'avoir fait le tour des php.ini, .user.ini, .htaccess...
Le phpinfo() me donne des chiffres bien au delà des 10Mo.

J'ai vu passer une hypothèse sur le proxy frontal => pouvez-vous me dire en quoi cela consiste ?
Et sinon, avez vous d'autres idées ?

En vous remerciant par avance !


J'ai vu passer une hypothèse sur le proxy frontal => pouvez-vous me dire en quoi cela consiste ?


Désactivez CDN et passez en mode 'Development' , essayez les deux modes PHP et PHP-CGI, ainsi vous aurez épuisé toutes les tentatives.

Merci pour ces indications !
Je modifie tel que proposé. La désactivation semble prendre du temps pour être effective. Je reviendrai ici pour les résultats après test.

Bonjour.
J'en ai profité pour changer le CDN en prenant celui d'OVH, "conseillé" dans l'interface. J'ai paramétré en mode développeur (je n'ai pas vu PHP et PHP-CGI), mais rien n'y a fait...
Au final j'ai contacté l'assistance via le chat et le verdict est tombé : hébergement sur serveur mutualisé => 10Mo max en upload (en HTTP). Une solution serait de passer en VPS (serveur dédié) mais ce n'est plus le même tarif. Je vais voir pour des solutions alternatives (resize de l'image en js plutôt qu'en php).
Merci en tout cas pour les suggestions, ça m'a permis de me familiariser avec les CDN.

Bonjour @LudovicB7

Provisoirement désactiver le CDN (même celui de OVH).

Puis à tester :

https://stackoverflow.com/questions/60262589/wordpress-max-upload-size-doesnt-change

Extrait :

Edit the **.htaccess** file in your WordPress site’s root folder and add the following code:

php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300

Theme functions add the following code to the theme’s **functions.php file**, you can increase the upload size:

@ini_set( 'upload_max_size' , '64M' );
@ini_set( 'post_max_size', '64M');
@ini_set( 'max_execution_time', '300' );

Bonjour,


Au final j'ai contacté l'assistance via le chat et le verdict est tombé : hébergement sur serveur mutualisé => 10Mo max en upload (en HTTP). Une solution serait de passer en VPS (serveur dédié) mais ce n'est plus le même tarif.

non c'est juste la réponse type pour vous envoyer vers une offre plus cher.

Si on prend les infos du phpinfo la limite d'upload est 128M en directe sur les cluster (Cf : https://phpfpm80.1infos.hosting.ovh.net/infos.hosting.ovh.net/).

Et comme dit plus haut il faut **désactiver** le CDN car celui-ci impose d'autre limites non répertoriés dans les docs OVH, donc c'est potentiellement lui qui vous limite l'upload.

Cordialement, janus57

J'essaie de suivre vos conseils :

Avec l'ajout des 4 lignes dans le .htaccess :
Error 503 Backend fetch failed
Backend fetch failed
Guru Meditation:
XID: 679409931
Varnish cache server

Donc je reviens en arrière, ça remarche, puis j'essaie de désactiver le CDN, et j'ai :
Error 520 Domain not allowed on CDN
Domain not allowed on CDN
Guru Meditation:
XID: 1060210025
Varnish cache server

Je réactive le CDN, et le site revient (heureusement). Mais du coup, je suis de retour à la case départ.
Ou alors, "résilier le CDN"...

Déjà, après avoir désactivé le CDN, **insère seulement** ceci au **tout début** du script xxx.php qui exécute le UPLOAD :

`@ini_set( 'upload_max_size' , '64M' );`

Bonjour,

@LudovicB7 : pour désactiver le CDN il faut changer les IP pour basculer sur les IP du cluster (voir : https://docs.ovh.com/fr/hosting/liste-des-adresses-ip-des-clusters-et-hebergements-web/).

Et pas besoin de suivre les conseil de Gaston, l'upload est déjà à 128M de base (donc ce serait le brider à 64M).

Cordialement, janus57

Ca n'a visiblement pas résolu le problème.


Ca n'a visiblement pas résolu le problème.


Alors je passe la main. :)

Je ne vois pas comment changer les IP. Elles apparaissent bien dans "Informations générales" et "Ipv4" mais sans que je ne puisse les modifier.

De plus l'IP en question me semble en contradiction avec la page que vous m'avez fournie.
Je suis sur le cluster 002, et mon CDN est activé. J'ai 213.186.33.2 dans mon interface (a priori cohérent avec cluster 002 / France), mais la doc dit :
Si le Shared CDN (sorti le 19/11/2020) est activé sur votre hébergement, vous devez utiliser cette adresse IP :
46.105.204.2

J'avoue être un peu perdu.

Bonjour,

quel domaine ?

Cordialement, janus57

J'ajoute que j'ai essayé en direct par l'accès au cluster :
https://<>.cluster002.ovh.net/
Le résultat est le même. J'imagine (peut être à tort), que ceci bypass le CDN.

Envoyé par message privé, enfin je crois...

Bonjour à tous.

Merci à tous pour le temps passé à me répondre !

Nous avons poursuivi des tests croisés avec janus57. J'ai ouvert un post spécifique sur ses conseils ici :
https://community.ovhcloud.com/community/fr/upload-limite-a-10mo-en-http?id=community_question&sys_id=18017148b51a0ad0f078da7e5576c91f
(ticket ouvert aussi, je croise les doigts)

Cordialement.