Tous les articles
Moodle

Moodle 5.2 : le sélecteur de fichiers reste bloqué

10 août 2026 · 7 min de lecture

izon
rizon.agency
Moodle 5.2 : le sélecteur de fichiers reste bloqué

Diagnostic rapide

Si le sélecteur de fichiers ou la zone de téléversement Moodle charge sans fin après une mise à niveau vers 5.2, commencez par les caches, les erreurs JavaScript, les surcharges du thème, les plugins de dépôt, les limites d’upload et le routage. Le spinner signifie que la page s’est affichée, mais que le navigateur n’a pas reçu de réponse valide pour la requête du sélecteur.

La discussion Moodle.org « Upgrade to 5.2 has broken file uploads where the box now never loads » décrit exactement cela : la zone et le bouton du file picker ne chargent jamais. Une discussion liée, « Students can't upload files after upgrading to 5.2 », montre la même douleur côté apprenant.

Pourquoi la page peut marcher alors que le sélecteur échoue

Le sélecteur de fichiers dépend de JavaScript Moodle, de requêtes AJAX, de plugins de dépôt, des sessions, des zones de fichiers brouillon, des limites serveur, des permissions et des templates de thème. Une page Moodle peut paraître normale pendant que la requête du sélecteur échoue en arrière-plan.

La preuve utile n’est donc pas « le site charge ». C’est la première requête réseau qui échoue.

Première correction : purger les caches

Après la mise à niveau, purgez manuellement :

Administration du site > Développement > Purger tous les caches

Ou en CLI :

php admin/cli/purge_caches.php

Le guide de mise à niveau Moodle 5.2 mentionne explicitement que des fonctionnalités manquantes, dont le sélecteur de fichiers, peuvent nécessiter une purge manuelle.

Ouvrez la console et l’onglet réseau

Sur la page cassée, ouvrez les outils développeur puis rechargez. Cherchez :

  • erreurs JavaScript ;
  • requêtes 403, 404, 500 ou 503 ;
  • réponses AJAX qui contiennent du HTML au lieu de JSON ;
  • contenu mixte bloqué après un passage HTTPS ;
  • requêtes vers le mauvais hôte ou chemin.

Le premier échec réseau est souvent le meilleur indice.

Activez le debugging sur préproduction

Sur une copie de préproduction, activez :

Administration du site > Développement > Débogage

Réglez :

  • Messages de débogage : DEVELOPER
  • Afficher les messages : oui, en préproduction seulement

Reproduisez ensuite le problème et vérifiez les logs serveur. En production, journalisez plutôt vers des fichiers.

Écartez le thème

Passez temporairement sur Boost en préproduction. Testez :

  1. ajouter une ressource fichier ;
  2. déposer un devoir ;
  3. téléverser une image de cours ;
  4. ouvrir le sélecteur avec un enseignant ;
  5. téléverser avec un étudiant.

Si tout fonctionne avec Boost mais pas avec le thème personnalisé, cherchez un template obsolète, un module AMD, un renderer override ou du JavaScript lié à l’ancien balisage.

Écartez les dépôts et plugins de fichiers

Le sélecteur charge les dépôts. Désactivez les dépôts non essentiels en préproduction.

ComposantCe qui peut casser
Dépôt système de fichiersChemin ou permissions
Google Drive / OneDriveOAuth, callback, token ou compte de service
Dépôt personnaliséIncompatibilité Moodle 5.2
Plugins médiaConflit JavaScript ou filtre
AntivirusRequête bloquée ou timeout

Mettez à jour le plugin fautif ou désactivez-le jusqu’à compatibilité.

Vérifiez les limites PHP et Moodle

Quand le sélecteur s’ouvre mais que l’upload échoue, les limites sont prioritaires. Quand il charge sans fin, elles sont moins probables, mais restent à vérifier.

upload_max_filesize = 128M
post_max_size = 128M
max_file_uploads = 20
max_input_vars = 5000
max_execution_time = 300
memory_limit = 256M

Puis vérifiez :

  • Administration du site > Sécurité > Paramètres de sécurité du site
  • limites d’upload du cours ;
  • limites de remise de devoir ;
  • paramètres de dépôt.

Vérifiez moodledata

Moodle stocke les fichiers téléversés dans moodledata, pas dans le dossier du code.

ls -ld /path/to/moodledata

Le serveur web doit pouvoir y écrire, mais le dossier ne doit pas être accessible publiquement. Ne corrigez pas les permissions en plaçant moodledata sous public_html.

Vérifiez la racine public et le routeur

Confirmez :

  • la racine web pointe vers moodle/public ;
  • $CFG->wwwroot utilise le bon schéma et hôte ;
  • le contrôle routeur passe ;
  • le proxy conserve correctement HTTPS et host.

Si le routeur échoue, corrigez-le d’abord avec Moodle 5.2 : routeur mal configuré.

Ordre pratique

  1. Purger tous les caches.
  2. Reproduire avec les outils développeur ouverts.
  3. Noter la première requête réseau en échec.
  4. Activer le debugging en préproduction.
  5. Passer temporairement à Boost.
  6. Désactiver les dépôts tiers.
  7. Vérifier limites PHP et Moodle.
  8. Vérifier moodledata.
  9. Vérifier routeur et racine web.
  10. Lancer cron et les tâches ad hoc.

FAQ

Pourquoi le sélecteur charge sans fin ?

Le navigateur attend généralement une réponse AJAX qui échoue, renvoie du JSON invalide ou est bloquée par JavaScript, thème, plugin, session, routeur ou permissions.

Purger les caches peut-il vraiment suffire ?

Oui. Moodle le recommande explicitement après la mise à niveau 5.2 quand des fonctionnalités manquent.

Dois-je réinstaller Moodle ?

Non. Une réinstallation détruit souvent les indices utiles. Trouvez d’abord la requête qui échoue.

Écrit par Choaib Mouhrach

Fondateur et ingénieur logiciel senior

Je conçois et développe des plateformes d’apprentissage sur mesure pour les organisations dont les parcours de formation et de certification sont complexes. Plutôt que d’assembler des plugins et des outils tiers, je crée des systèmes adaptés au fonctionnement réel de chaque activité, afin de réduire la charge administrative et d’améliorer l’expérience des apprenants.

Commencer

Votre produit d'apprentissage mérite sa propre plateforme.

Si vous voulez offrir une expérience d'apprentissage construite autour de votre produit, de vos apprenants et de vos objectifs, vous êtes au bon endroit. Nous construisons des plateformes qui vous donnent le contrôle et la flexibilité pour grandir sans limites.