Impossible d’ajouter une pièce jointe sur phpBB : image invalide, upload bloqué ou fichier introuvable
Vous essayez d’ajouter une image, un PDF, une archive ou un autre fichier à un message phpBB, mais le téléversement échoue ?
Selon les cas, phpBB peut afficher un message comme :
Code : Tout sélectionner
Le fichier image que vous avez essayé de joindre n’est pas valide.
ou :
Code : Tout sélectionner
Le dossier temporaire est introuvable ou n’est pas accessible en écriture.
Vous pouvez également rencontrer d’autres symptômes :
le fichier semble se téléverser puis disparaît ;
la barre de progression reste bloquée ;
une petite image fonctionne mais une grande échoue ;
les PDF fonctionnent mais pas les images ;
les pièces jointes fonctionnent dans certains forums mais pas dans d’autres ;
un administrateur peut joindre des fichiers mais pas un membre normal ;
les anciennes pièces jointes ne s’affichent plus après une migration ;
les fichiers existent dans le dossier
Code : Tout sélectionner
files/mais phpBB ne les retrouve pas ;
la base de données contient les pièces jointes mais les téléchargements renvoient une erreur ;
le problème est apparu après un changement de serveur, de version PHP ou d’hébergeur.
La difficulté vient du fait qu’une pièce jointe traverse plusieurs couches avant d’être réellement disponible dans un message.
Un échec peut provenir :
des permissions phpBB ;
du type de fichier autorisé ;
de la taille maximale configurée dans phpBB ;
de la configuration PHP ;
du dossier temporaire PHP ;
du dossier
Code : Tout sélectionner
files/;
des droits du système de fichiers ;
de l’espace disque ;
d’une limite Apache, Nginx ou du proxy ;
d’une migration incomplète ;
d’un fichier corrompu ;
d’une extension phpBB ;
ou de plusieurs limites différentes qui se superposent.
L’objectif de ce guide est de déterminer précisément à quelle étape l’envoi échoue, sans modifier le serveur ou la base de données au hasard.
1. Commencez par identifier exactement le symptôme
Avant de modifier quoi que ce soit, effectuez plusieurs tests simples.
Préparez par exemple :
une petite image JPEG ;
une petite image PNG ;
un petit fichier PDF ;
un fichier plus volumineux du même type que celui qui échoue.
Notez ensuite les résultats.
Par exemple :
Code : Tout sélectionner
JPEG 100 Ko : fonctionne
PNG 150 Ko : fonctionne
PDF 200 Ko : fonctionne
JPEG 4 Mo : échoue
PDF 4 Mo : échoue
Ce résultat oriente immédiatement vers une limite de taille.
Autre exemple :
Code : Tout sélectionner
JPEG : échoue
PNG : échoue
PDF : fonctionne
ZIP : fonctionne
Ici, la taille n’est probablement pas le premier suspect.
Il faut plutôt examiner la gestion des images, leur validation, leur type MIME, leur extension ou la configuration PHP utilisée pour analyser les images.
Autre possibilité :
Code : Tout sélectionner
Administrateur : fonctionne
Utilisateur normal : échoue
Dans ce cas, commencez par les permissions phpBB avant de toucher à PHP ou au serveur.
Le premier diagnostic consiste donc à comparer, pas à modifier.
2. Le bouton permettant de joindre un fichier est-il présent ?
Il faut distinguer deux situations très différentes.
Situation A :
L’utilisateur ne voit même pas la possibilité d’ajouter une pièce jointe.
Cela peut être un problème de permissions phpBB.
Situation B :
Le formulaire de pièce jointe est bien présent, le fichier peut être sélectionné, mais son envoi produit une erreur.
Dans ce deuxième cas, le problème se situe probablement plus loin dans la chaîne de traitement.
Si votre problème concerne les permissions générales de phpBB, consultez également :
Comprendre enfin les permissions phpBB : groupes, rôles, Oui, Non et Jamais
3. Vérifiez les permissions phpBB liées aux pièces jointes
phpBB distingue notamment le droit :
de joindre un fichier ;
de télécharger un fichier.
Un utilisateur peut donc parfaitement avoir le droit de publier un message sans avoir le droit d’y joindre un fichier.
Inversement, il peut être autorisé à voir un sujet mais pas à télécharger les pièces jointes qu’il contient.
Vérifiez les permissions du groupe et du forum concernés.
Ne faites pas uniquement le test avec votre compte Fondateur ou administrateur.
Testez également avec un compte utilisateur normal.
Un test effectué uniquement avec le compte le plus privilégié du forum peut masquer un problème de permissions affectant tous les autres membres.
4. Vérifiez que le type de fichier est réellement autorisé
phpBB ne permet pas nécessairement l’envoi de n’importe quelle extension de fichier.
Dans le PCA, recherchez la gestion des :
Extensions
et des :
Groupes d’extensions
Les libellés exacts peuvent légèrement varier selon la traduction utilisée.
Vous pouvez par exemple avoir des extensions comme :
Code : Tout sélectionner
jpg
jpeg
png
gif
pdf
zip
txt
Chaque extension peut appartenir à un groupe possédant ses propres règles.
Vérifiez :
que l’extension existe dans phpBB ;
qu’elle appartient au bon groupe ;
que ce groupe est autorisé ;
qu’il est autorisé dans le forum concerné ;
qu’il est autorisé dans les messages privés si votre test concerne un MP ;
que sa limite de taille n’est pas inférieure à celle que vous pensez avoir configurée ailleurs.
Un détail important :
une extension autorisée globalement peut encore être limitée par les réglages de son groupe.
5. Ne confondez jamais extension du fichier et contenu réel
Renommer simplement :
Code : Tout sélectionner
document.exe
en :
Code : Tout sélectionner
document.jpg
ne transforme évidemment pas le fichier en image JPEG.
phpBB et PHP peuvent vérifier davantage que les quelques lettres situées après le point.
Pour une image, le serveur peut notamment tenter de déterminer si le contenu correspond réellement à un format d’image valide.
Ainsi, un fichier nommé :
Code : Tout sélectionner
photo.jpg
peut être refusé s’il est :
corrompu ;
incomplet ;
mal transféré ;
dans un autre format malgré son extension ;
illisible par les fonctions PHP utilisées pour l’analyser.
Si une image précise échoue, essayez une autre image connue comme valide avant de conclure que phpBB est défectueux.
6. « Le fichier image n’est pas valide » ne signifie pas forcément que l’image est mauvaise
Ce message peut effectivement apparaître avec un fichier corrompu.
Mais il peut également être la conséquence d’un problème plus général.
Par exemple :
fichier temporaire PHP inaccessible ;
téléversement incomplet ;
limite PHP ;
configuration PHP incorrecte ;
problème apparu après un changement de version PHP ;
fichier altéré pendant une migration ou un transfert FTP.
Ne passez donc pas plusieurs heures à convertir votre image dix fois si toutes les images échouent simultanément.
Posez-vous plutôt cette question :
Est-ce ce fichier précis qui est refusé, ou est-ce l’ensemble du système d’upload d’images qui ne fonctionne plus ?
7. Vérifiez les limites configurées dans phpBB
phpBB possède ses propres limites concernant les pièces jointes.
Vérifiez notamment :
la taille maximale d’une pièce jointe ;
le quota total consacré aux pièces jointes ;
la taille maximale définie pour le groupe d’extensions concerné ;
le nombre maximal de pièces jointes par message.
Une erreur classique consiste à augmenter uniquement la limite générale.
Imaginez :
Code : Tout sélectionner
Limite générale phpBB : 20 Mo
Limite du groupe Images : 2 Mo
Fichier envoyé : 5 Mo
Le fichier peut encore être refusé.
La limite réellement applicable est celle résultant de l’ensemble des règles concernées.
8. phpBB n’est pas la seule couche qui limite la taille
Même si phpBB accepte théoriquement un fichier de 20 Mo, PHP peut refuser la requête avant que phpBB ne reçoive réellement le fichier.
Parmi les paramètres PHP importants figurent notamment :
Code : Tout sélectionner
upload_max_filesize
post_max_size
max_file_uploads
upload_tmp_dir
memory_limit
max_execution_time
Les deux valeurs les plus fréquemment rencontrées lors d’un problème de taille sont :
Code : Tout sélectionner
upload_max_filesize
post_max_size
Exemple :
Code : Tout sélectionner
phpBB : 20 Mo
upload_max_filesize : 8 Mo
post_max_size : 8 Mo
Dans cette situation, augmenter phpBB à 20 Mo ne permet pas réellement d’envoyer un fichier de 20 Mo.
PHP continue à imposer une limite plus basse.
9. La règle à retenir : la plus petite limite gagne
Un téléversement peut traverser plusieurs limites.
Par exemple :
Code : Tout sélectionner
phpBB : 50 Mo
Groupe d’extensions : 10 Mo
PHP upload_max_filesize : 8 Mo
PHP post_max_size : 16 Mo
Serveur Web : 20 Mo
Proxy : 100 Mo
Le fichier de 9 Mo échoue malgré la configuration générale de phpBB à 50 Mo.
Pourquoi ?
Parce que :
Code : Tout sélectionner
upload_max_filesize = 8 Mo
est ici la limite la plus basse.
Vous pouvez retenir cette règle :
la taille réellement possible est limitée par la couche la plus restrictive.
10. Attention : post_max_size concerne toute la requête
Le paramètre :
Code : Tout sélectionner
post_max_size
ne concerne pas uniquement le fichier lui-même.
La requête peut également contenir :
le texte du message ;
les données du formulaire ;
plusieurs fichiers ;
d’autres champs.
Il est donc préférable que :
Code : Tout sélectionner
post_max_size
soit suffisamment supérieur à la taille maximale du fichier que vous souhaitez autoriser.
Évitez de configurer plusieurs limites exactement à la même valeur sans tenir compte du reste de la requête.
11. Vérifiez la version PHP réellement utilisée par le site
Un changement de version PHP peut résoudre un problème, mais il peut également en révéler un autre.
Commencez par déterminer la version réellement utilisée par votre forum.
Si vous disposez de SSH :
Code : Tout sélectionner
php -v
peut vous donner une première indication.
Mais attention :
la version PHP utilisée en ligne de commande peut être différente de celle utilisée par le site Web.
Votre serveur peut par exemple utiliser :
Code : Tout sélectionner
PHP CLI : 8.3
PHP-FPM du site : 8.2
Ne concluez donc pas trop rapidement :
php -v indique la bonne version, donc Apache utilise forcément la même.
Sur un hébergement mutualisé, vérifiez également la version PHP sélectionnée dans le panneau de l’hébergeur.
Dans le PCA, les informations PHP disponibles peuvent aussi aider à connaître la configuration réellement utilisée par le site.
12. Le dossier temporaire PHP est une étape essentielle
Lorsqu’un navigateur téléverse un fichier, celui-ci n’est pas nécessairement envoyé directement dans :
Code : Tout sélectionner
files/
PHP le reçoit d’abord comme fichier temporaire.
Le paramètre :
Code : Tout sélectionner
upload_tmp_dir
peut définir l’emplacement utilisé.
Si aucun chemin spécifique n’est défini, PHP peut utiliser le dossier temporaire du système.
Le problème apparaît lorsque ce dossier :
n’existe plus ;
n’est pas accessible ;
n’est pas accessible en écriture pour PHP ;
se trouve sur une partition pleine ;
possède une configuration incorrecte.
Vous pouvez alors obtenir un message concernant un dossier temporaire introuvable ou non accessible en écriture.
13. Ne créez pas un dossier /tmp au hasard dans votre site
Si phpBB vous parle d’un dossier temporaire, ne supposez pas immédiatement qu’il faut créer :
Code : Tout sélectionner
public_html/tmp/
ou :
Code : Tout sélectionner
forum/tmp/
Le dossier temporaire utilisé par PHP dépend de la configuration du serveur.
Sur un hébergement mutualisé, cette partie peut être entièrement gérée par l’hébergeur.
Si la configuration PHP indique un dossier temporaire inaccessible, contactez votre hébergeur avec le message d’erreur exact plutôt que de créer plusieurs dossiers au hasard dans votre espace Web.
14. Vérifiez le dossier files/ de phpBB
Par défaut, les pièces jointes phpBB sont stockées dans un dossier prévu à cet effet, généralement :
Code : Tout sélectionner
files/
Ce dossier doit pouvoir être utilisé en écriture par le processus Web qui exécute phpBB.
Après :
une migration ;
une restauration ;
un changement de serveur ;
une copie effectuée avec root ;
un transfert depuis un autre hébergement ;
les propriétaires et permissions peuvent changer.
Le dossier peut parfaitement exister sans que PHP soit autorisé à y créer des fichiers.
15. Ne mettez pas tout le forum en 777
Un problème de droits système ne doit pas être corrigé en rendant toute l’installation accessible en écriture à tout le monde.
Évitez :
Code : Tout sélectionner
chmod -R 777 .
Ce n’est pas une méthode de diagnostic.
Selon votre serveur, le bon fonctionnement dépend notamment :
du propriétaire des fichiers ;
du groupe ;
de l’utilisateur qui exécute PHP ou le serveur Web ;
des permissions Unix ;
d’éventuelles ACL système.
Le besoin réel est simple :
le processus Web doit pouvoir écrire dans les dossiers qui doivent être inscriptibles.
La manière correcte d’obtenir ce résultat dépend de votre hébergement.
Sur un VPS, examinez d’abord les propriétaires et groupes.
Par exemple :
Code : Tout sélectionner
ls -ld files
Ne changez pas ensuite les permissions au hasard sans savoir quel utilisateur exécute réellement PHP.
16. Vérifiez l’espace disque
Un serveur dont le disque est plein peut produire des symptômes surprenants.
Sur un VPS :
Code : Tout sélectionner
df -h
permet d’obtenir une première vue de l’espace disponible.
Vous pourriez par exemple découvrir :
Code : Tout sélectionner
Filesystem Size Used Avail Use%
/dev/... 40G 40G 0 100%
Dans cette situation, le problème n’est pas la limite configurée dans phpBB.
Le serveur n’a tout simplement plus d’espace pour écrire le fichier.
17. Vérifiez également les inodes
Un disque peut encore disposer de plusieurs gigaoctets libres et malgré tout être incapable de créer de nouveaux fichiers.
Sur certains systèmes de fichiers, le nombre d’inodes disponibles peut être épuisé.
Vous pouvez vérifier avec :
Code : Tout sélectionner
df -i
Si le nombre d’inodes disponibles est nul, le serveur ne pourra plus créer normalement de nouveaux fichiers, même si la commande :
Code : Tout sélectionner
df -h
semble indiquer qu’il reste de la place.
C’est une cause moins connue, mais importante sur les serveurs contenant énormément de petits fichiers.
18. L’hébergeur peut également imposer son propre quota
Sur un hébergement mutualisé, vous pouvez rencontrer :
un quota global d’espace disque ;
un quota de fichiers ;
un quota spécifique au compte ;
une limite de taille de requête ;
une limitation PHP que vous ne pouvez pas modifier vous-même.
Dans ce cas, phpBB ne peut pas dépasser les limites imposées par l’environnement qui l’héberge.
Avant d’accuser phpBB, consultez donc également le panneau de votre hébergeur.
19. Apache, Nginx ou un proxy peuvent ajouter une limite supplémentaire
Même si :
phpBB accepte la taille ;
PHP accepte la taille ;
le disque possède suffisamment d’espace ;
le serveur Web ou un proxy placé devant le forum peut encore refuser la requête.
Selon l’infrastructure, une limite peut exister dans :
Apache ;
Nginx ;
un reverse proxy ;
un CDN ;
un panneau d’hébergement ;
un service intermédiaire.
Le symptôme peut alors être différent d’une erreur phpBB classique.
Vous pouvez par exemple obtenir :
une erreur HTTP ;
une page générée par le serveur Web ;
une connexion interrompue ;
une réponse trop volumineuse ;
un message provenant directement du proxy.
Si la page d’erreur n’a même plus l’apparence de votre forum, envisagez sérieusement qu’elle soit produite avant phpBB.
20. Comparez un petit fichier et un gros fichier
C’est l’un des tests les plus efficaces.
Essayez par exemple :
Code : Tout sélectionner
image.jpg : 100 Ko
image.jpg : 1 Mo
image.jpg : 5 Mo
image.jpg : 10 Mo
Si tout fonctionne jusqu’à une certaine taille puis échoue systématiquement au-delà, vous avez probablement affaire à une limite.
Cherchez alors la plus petite valeur parmi :
Code : Tout sélectionner
phpBB
groupe d’extensions
PHP
serveur Web
proxy
hébergeur
21. Comparez plusieurs types de fichiers
Testez également plusieurs formats.
Exemple :
Code : Tout sélectionner
JPG 200 Ko : erreur
PNG 200 Ko : erreur
PDF 200 Ko : fonctionne
ZIP 200 Ko : fonctionne
Cette situation est très différente de :
Code : Tout sélectionner
JPG 200 Ko : erreur
PNG 200 Ko : erreur
PDF 200 Ko : erreur
ZIP 200 Ko : erreur
Dans le deuxième cas, le problème semble beaucoup plus général.
Dans le premier, examinez en priorité les règles et traitements spécifiques aux images.
22. Comparez plusieurs forums
Une pièce jointe peut être autorisée dans un forum et interdite dans un autre.
Testez donc le même compte et le même fichier dans deux forums différents.
Par exemple :
Code : Tout sélectionner
Forum A : fonctionne
Forum B : échoue
Cela peut orienter le diagnostic vers :
les permissions du forum ;
les groupes d’extensions autorisés dans ce forum ;
une configuration spécifique.
Si le même fichier échoue partout, cherchez plutôt une cause globale.
23. Comparez plusieurs utilisateurs
Autre test :
Code : Tout sélectionner
Compte administrateur : fonctionne
Compte utilisateur : échoue
Cela oriente vers les permissions.
Mais :
Code : Tout sélectionner
Compte administrateur : échoue
Compte utilisateur : échoue
rend un problème général beaucoup plus probable.
Ne testez pas uniquement avec votre propre compte.
24. Le dossier files/ ne ressemble pas à une collection normale de photos
Un administrateur qui ouvre le dossier :
Code : Tout sélectionner
files/
pour la première fois peut être surpris.
Il ne faut pas nécessairement s’attendre à y trouver :
Code : Tout sélectionner
vacances.jpg
facture.pdf
manuel.zip
phpBB gère ses pièces jointes avec des noms physiques utilisés en interne et conserve dans la base de données les informations permettant de retrouver le nom original et les métadonnées correspondantes.
Vous pouvez donc rencontrer des fichiers dont le nom physique ne ressemble absolument pas au nom affiché aux utilisateurs.
Ne renommez pas manuellement les fichiers de files/ pour essayer de les réparer.
Vous casseriez la correspondance attendue par phpBB.
25. La base de données et files/ fonctionnent ensemble
Pour comprendre une migration de pièces jointes, imaginez deux parties.
Partie 1 : les fichiers physiques
Ils se trouvent dans :
Code : Tout sélectionner
files/
Partie 2 : les informations de la base de données
Elles permettent notamment à phpBB de savoir :
à quel message appartient la pièce jointe ;
son nom original ;
son nom physique ;
sa taille ;
son type ;
ses informations associées.
Les deux éléments sont nécessaires.
Copier uniquement la base de données ne suffit donc pas.
Copier uniquement le dossier
Code : Tout sélectionner
files/ne recrée pas non plus automatiquement toutes les relations avec les messages.
26. Après une migration : anciennes pièces jointes absentes
Supposons que votre ancien forum contienne :
Code : Tout sélectionner
25 000 pièces jointes
Vous exportez correctement la base de données.
Vous installez phpBB sur un nouveau serveur.
Vous importez la base.
Les sujets sont présents.
Les messages sont présents.
Mais toutes les images jointes sont manquantes.
La première question à poser est :
Le dossier files/ de l’ancienne installation a-t-il également été transféré intégralement ?
La base de données ne contient pas nécessairement elle-même les fichiers binaires correspondant à toutes vos pièces jointes.
Votre sauvegarde doit donc inclure les données physiques nécessaires.
Pour une procédure générale de sauvegarde et de mise à jour, consultez également :
Mettre à jour phpBB sans perdre son forum : méthode sûre, sauvegarde et retour arrière
27. Attention au mode de transfert FTP
Cette partie est particulièrement importante lors d’une migration.
Les pièces jointes sont des fichiers binaires.
Un client FTP mal configuré peut tenter de traiter certains fichiers comme du texte.
Le risque devient particulièrement trompeur lorsque les noms physiques utilisés dans :
Code : Tout sélectionner
files/
ne possèdent pas une extension classique permettant au logiciel FTP d’identifier facilement leur type.
Pour le dossier contenant les pièces jointes, utilisez un mode de transfert adapté aux fichiers binaires ou un mode automatique fiable.
Ne forcez pas un transfert ASCII du contenu de files/.
Un fichier peut être présent sur le nouveau serveur, avoir un nom correct et malgré tout être corrompu parce que son contenu a été altéré pendant le transfert.
28. Comment reconnaître une corruption après transfert ?
Situation typique :
la base semble correcte ;
le fichier existe dans
Code : Tout sélectionner
files/;
sa taille paraît plausible ;
phpBB tente de le servir ;
mais l’image est illisible ou le fichier téléchargé est inutilisable.
Dans ce cas, comparez le fichier source et le fichier copié.
Sur un VPS, vous pouvez par exemple calculer une empreinte :
Code : Tout sélectionner
sha256sum nom_du_fichier
sur l’ancien serveur et le nouveau serveur.
Si les deux fichiers sont censés être identiques mais produisent des SHA-256 différents, le transfert mérite d’être examiné.
Attention à ne pas comparer deux fichiers différents uniquement parce qu’ils possèdent un nom similaire.
29. Ne déplacez pas files/ sans comprendre la configuration
Le dossier de téléversement des pièces jointes fait partie de la configuration de phpBB.
Ne décidez pas de déplacer manuellement :
Code : Tout sélectionner
files/
vers un autre emplacement simplement pour « faire plus propre ».
Si phpBB continue à chercher les fichiers dans l’ancien emplacement, les téléchargements échoueront.
De même, ne modifiez pas le cœur de phpBB pour changer un chemin lorsqu’un réglage prévu par le système permet de gérer le stockage.
L’objectif est de conserver une installation maintenable et compatible avec les mises à jour.
30. Une extension peut-elle casser les pièces jointes ?
Oui.
Une extension peut intervenir :
sur le formulaire de publication ;
sur la validation d’un fichier ;
sur l’affichage des messages ;
sur le téléchargement ;
sur les images ;
sur la sécurité ;
sur le stockage.
Si le problème est apparu immédiatement après l’installation ou la mise à jour d’une extension, ajoutez cette information à votre diagnostic.
Mais ne désactivez pas vingt extensions simultanément.
Procédez progressivement.
Par exemple :
Code : Tout sélectionner
Extension active : upload impossible
Extension désactivée : upload fonctionne
Extension réactivée : upload impossible
Ce test reproductible est beaucoup plus utile qu’un changement massif dont vous ne connaissez plus l’effet exact.
31. Vérifiez les logs
Un message générique affiché dans le navigateur peut cacher une erreur beaucoup plus précise dans les journaux.
Consultez :
le journal d’erreurs de phpBB ;
les logs PHP ;
les logs PHP-FPM ;
les logs Apache ou Nginx ;
les journaux de votre hébergeur ;
les éventuels logs du proxy.
Cherchez particulièrement ce qui apparaît au moment exact du test.
Exemples de termes pouvant être utiles :
Code : Tout sélectionner
upload
temporary
permission denied
files
failed to open stream
write
disk
quota
memory
POST
request entity too large
file size
Ne copiez pas cinq années de logs dans votre demande d’aide.
Reproduisez le problème une fois puis récupérez les lignes correspondantes.
32. Si le problème est apparu après une mise à jour PHP
Notez précisément :
Code : Tout sélectionner
Ancienne version PHP :
Nouvelle version PHP :
Version phpBB :
Date d’apparition du problème :
Vérifiez également que votre version phpBB est compatible avec la version PHP réellement utilisée.
Une installation peut sembler fonctionner correctement sur l’accueil tout en rencontrant des problèmes uniquement sur certaines fonctions.
Une incompatibilité n’entraîne pas nécessairement une page blanche immédiate sur toutes les pages.
33. Si le problème est apparu après une migration
Contrôlez au minimum :
la base de données ;
le dossier
Code : Tout sélectionner
files/;
les propriétaires et permissions ;
la configuration PHP ;
le dossier temporaire ;
l’espace disque ;
la version PHP ;
les limites de téléversement ;
le mode utilisé pour transférer les fichiers.
Une migration ne consiste pas uniquement à faire :
Code : Tout sélectionner
export SQL
import SQL
Les pièces jointes sont précisément l’un des exemples montrant pourquoi les fichiers de l’installation doivent également être sauvegardés et transférés correctement.
34. Si seules les anciennes pièces jointes sont cassées
Cas très intéressant :
Code : Tout sélectionner
Nouvelle pièce jointe : fonctionne
Ancienne pièce jointe : erreur
Dans ce cas, le système d’upload actuel fonctionne probablement.
Cherchez plutôt :
une migration incomplète ;
des fichiers anciens absents ;
des fichiers anciens corrompus ;
un ancien dossier de stockage différent ;
une incohérence entre la base restaurée et les fichiers copiés.
Ne perdez pas du temps à augmenter :
Code : Tout sélectionner
upload_max_filesize
si les nouveaux fichiers fonctionnent parfaitement.
Le symptôme indique déjà que le problème concerne probablement les données historiques.
35. Si les nouvelles pièces jointes échouent mais les anciennes fonctionnent
Situation inverse :
Code : Tout sélectionner
Anciennes pièces jointes : téléchargement correct
Nouvel upload : impossible
Le dossier historique est donc au moins lisible.
Il faut chercher ce qui empêche l’écriture de nouvelles données.
Priorités :
permissions d’écriture de
Code : Tout sélectionner
files/;
dossier temporaire PHP ;
limites PHP ;
quota disque ;
quota phpBB ;
type de fichier ;
configuration serveur ;
extension récente.
36. Si le fichier est envoyé mais impossible à télécharger
Autre situation :
Code : Tout sélectionner
Upload : fonctionne
Message : publié
Pièce jointe : visible
Téléchargement : erreur
Le téléversement lui-même n’est alors peut-être pas responsable.
Examinez plutôt :
la présence réelle du fichier physique ;
la correspondance avec la base ;
les permissions de lecture ;
les permissions phpBB de téléchargement ;
le chemin configuré ;
une extension intervenant sur le téléchargement ;
les logs générés lors de la tentative.
37. Si seules les images échouent
Utilisez une image très simple et connue comme valide.
Par exemple :
Code : Tout sélectionner
JPEG standard
petite taille
dimensions raisonnables
Puis essayez un PNG.
Si :
Code : Tout sélectionner
JPG : erreur
PNG : erreur
PDF : fonctionne
vérifiez notamment :
la validation d’image ;
la version PHP ;
les modules PHP liés au traitement d’images lorsque votre configuration en utilise ;
les dimensions autorisées ;
la taille ;
la corruption éventuelle du fichier temporaire.
N’utilisez pas immédiatement une image de 20 000 pixels de large comme unique fichier de test.
38. Construisez un diagnostic reproductible
Un bon rapport ressemble à ceci :
Code : Tout sélectionner
phpBB : 3.3.x
PHP : 8.x
Hébergement : VPS
JPEG 100 Ko : fonctionne
JPEG 3 Mo : échoue
PDF 100 Ko : fonctionne
PDF 3 Mo : échoue
Limite phpBB : 10 Mo
Limite groupe : 10 Mo
upload_max_filesize : 2 Mo
post_max_size : 8 Mo
La cause probable devient immédiatement visible.
Un mauvais rapport ressemble à ceci :
Les images ne marchent plus, j’ai tout vérifié.
Personne ne sait ce que signifie « tout ».
39. Méthode de diagnostic recommandée
Procédez dans cet ordre.
Vérifiez si l’option de pièce jointe est visible.
Testez avec un compte administrateur et un compte utilisateur.
Testez une petite image valide.
Testez un petit fichier non image autorisé.
Testez le même fichier dans plusieurs forums.
Vérifiez les extensions et groupes d’extensions phpBB.
Vérifiez les limites de taille phpBB.
Vérifiez les limites PHP.
Vérifiez le dossier temporaire PHP.
Vérifiez que
Code : Tout sélectionner
files/est accessible en écriture.
Vérifiez l’espace disque.
Vérifiez les éventuels quotas de l’hébergeur.
Vérifiez les limites du serveur Web ou du proxy.
Consultez les logs.
Si le problème suit une migration, vérifiez l’intégrité de
Code : Tout sélectionner
files/.
Si nécessaire, testez les extensions une par une.
Cette méthode permet d’éliminer progressivement les causes sans casser une installation qui fonctionnait encore partiellement.
40. Ce qu’il ne faut pas faire
Évitez les réactions suivantes :
mettre toute l’installation en 777 ;
renommer les fichiers physiques présents dans
Code : Tout sélectionner
files/;
vider une table SQL parce que son nom contient « attachments » ;
supprimer
Code : Tout sélectionner
files/pour « repartir proprement » ;
réinstaller phpBB avant d’avoir lu les logs ;
augmenter toutes les limites à plusieurs gigaoctets ;
désactiver toutes les protections de fichiers ;
modifier le cœur de phpBB ;
changer dix paramètres en même temps ;
écraser le dossier
Code : Tout sélectionner
files/avec un dossier vide lors d’une mise à jour.
Une correction efficace doit résoudre la cause sans introduire un nouveau problème de sécurité ou de données.
41. Informations à fournir lorsque vous demandez de l’aide
Pour qu’un diagnostic puisse commencer rapidement, indiquez :
Versions
Code : Tout sélectionner
Version phpBB :
Version PHP :
MariaDB ou MySQL :
Hébergement
Code : Tout sélectionner
Mutualisé / VPS / dédié :
Apache / Nginx / autre si connu :
Proxy ou CDN : oui/non/inconnu
Symptôme exact
Copiez le message complet affiché par phpBB.
Tests
Code : Tout sélectionner
Petite image JPG :
Petite image PNG :
Petit PDF :
Gros fichier :
Utilisateurs
Code : Tout sélectionner
Administrateur :
Utilisateur enregistré :
Forums
Code : Tout sélectionner
Tous les forums concernés : oui/non
Messages privés concernés : oui/non/non testé
Configuration
Si vous les connaissez :
Code : Tout sélectionner
Limite phpBB :
Limite groupe d’extensions :
upload_max_filesize :
post_max_size :
upload_tmp_dir :
Contexte
Précisez si le problème est apparu après :
une mise à jour phpBB ;
une mise à jour PHP ;
un changement d’hébergeur ;
une migration ;
une restauration ;
l’installation d’une extension ;
un changement de permissions serveur.
Logs
Ajoutez uniquement les erreurs correspondant au test.
Ne publiez jamais :
mot de passe FTP ;
mot de passe SSH ;
mot de passe MariaDB/MySQL ;
contenu complet de
Code : Tout sélectionner
config.php;
clé privée ;
secret ;
jeton d’accès.
42. Checklist rapide
L’utilisateur possède le droit de joindre des fichiers.
L’extension du fichier est autorisée.
Le groupe d’extensions est activé.
Le groupe est autorisé dans le forum concerné.
La taille respecte la limite du groupe.
La taille respecte la limite générale de phpBB.
La taille respecte
Code : Tout sélectionner
upload_max_filesize.
Code : Tout sélectionner
post_max_sizeest suffisamment élevé.
Le dossier temporaire PHP fonctionne.
Code : Tout sélectionner
files/est accessible en écriture par le serveur Web.
Le disque n’est pas plein.
Les inodes ne sont pas épuisés.
Le quota de l’hébergeur n’est pas dépassé.
Le serveur Web ou proxy n’impose pas une limite inférieure.
La version PHP utilisée par le Web est connue.
Les logs ont été consultés.
Le test a été effectué avec plusieurs fichiers.
Le test a été effectué avec plusieurs utilisateurs.
Le test a été effectué dans plusieurs forums.
Après une migration,
Code : Tout sélectionner
files/a bien été transféré.
Les fichiers n’ont pas été corrompus par un transfert ASCII.
Aucun fichier physique de
Code : Tout sélectionner
files/n’a été renommé manuellement.
Aucune donnée SQL n’a été supprimée au hasard.
À retenir
Lorsqu’une pièce jointe phpBB ne fonctionne plus, ne commencez pas par modifier les permissions du serveur, PHP et la base de données simultanément.
Commencez par déterminer :
Code : Tout sélectionner
Quel fichier échoue ?
Quelle taille ?
Quel type ?
Quel utilisateur ?
Quel forum ?
Depuis quand ?
Après quel changement ?
Puis suivez la chaîne réelle :
Code : Tout sélectionner
Permissions phpBB
Types autorisés
Limites phpBB
Limites PHP
Dossier temporaire
Dossier files/
Espace disque
Serveur Web
Proxy
Base de données
Fichiers physiques
Retenez également un point essentiel lors des migrations :
les pièces jointes ne vivent pas uniquement dans la base de données.
La base contient les informations permettant à phpBB de les retrouver.
Le dossier :
Code : Tout sélectionner
files/
contient les fichiers physiques correspondants.
Les deux doivent rester cohérents.
Enfin :
ne renommez pas les fichiers de files/ à la main ;
ne forcez pas leur transfert en mode ASCII ;
ne mettez pas tout le forum en 777 ;
et ne supprimez aucune donnée avant d’avoir identifié précisément la cause.
Un diagnostic progressif permet presque toujours de déterminer si le blocage vient de phpBB, de PHP, du système de fichiers, de l’hébergement ou de la migration.