« An error occurred while opening the temporary file for writing » : le fichier temporaire de l’envoi ne peut pas être écrit

Fiche du décodeur d'erreurs, mise à jour le 9 novembre 2026

GênantMédiathèque et images
Le message affiché
An error occurred while opening the temporary file for writing. The available space in the temporary directory may be full, or the temporary file may have been deleted before the transfer was complete
Autres formulations du même message 1
  • Une erreur est survenue lors de l’ouverture du fichier temporaire en écriture. L’espace disponible dans le répertoire temporaire est peut-être saturé, ou bien le fichier temporaire a été supprimé avant la fin du transfert.

Chaque fichier envoyé au site (image, extension, thème, import) est d’abord écrit par PHP dans un dossier temporaire du serveur, puis déplacé à sa place. Ce message signale que PHP n’a pas pu écrire ce fichier temporaire, ou qu’il a disparu avant la fin de l’envoi. Le site continue de fonctionner, mais les envois de fichiers échouent.

Pourquoi cette erreur apparaît

  • Le dossier temporaire du serveur est plein. Il est souvent séparé de votre espace d’hébergement et bien plus petit : il peut saturer alors qu’il vous reste de la place.
  • Le quota de l’hébergement est atteint, en espace disque ou en nombre de fichiers, très souvent à cause de sauvegardes laissées sur le serveur.
  • Le dossier temporaire existe mais PHP n’a plus le droit d’y écrire, après une migration, un changement de version de PHP ou une modification des droits.
  • Un antivirus du serveur ou un nettoyage automatique supprime le fichier pendant l’envoi, avant que WordPress ait pu le récupérer.

Comment corriger le problème

Faire un essai avec un tout petit fichier

Envoyez une image très légère, de quelques dizaines de Ko, dans Médias > Ajouter. Si elle passe et que vos fichiers habituels échouent, le dossier temporaire manque de place pour les gros envois. Si même ce petit fichier échoue, le problème vient d’un dossier plein ou interdit en écriture, et la suite de cette fiche s’applique.

Libérer de l’espace sur l’hébergement

Dans votre espace client, regardez l’espace disque utilisé et, s’il est affiché, le nombre de fichiers (inodes). Les gros consommateurs habituels sont les sauvegardes stockées sur le serveur (wp-content/updraft, wp-content/ai1wm-backups, archives .zip ou .wpress à la racine), les dossiers de cache et les fichiers error_log. Téléchargez une copie de ces sauvegardes sur votre ordinateur avant de les supprimer du serveur.

Identifier le dossier temporaire et son état

Créez à la racine du site un fichier nommé test-tmp.php contenant le code ci-dessous, ouvrez-le dans le navigateur (https://votre-site.fr/test-tmp.php), notez le résultat, puis supprimez le fichier tout de suite. Il indique le dossier utilisé par PHP, s’il accepte l’écriture et la place qui y reste. Un dossier « NON accessible en écriture » ou presque plein est à signaler tel quel à l’hébergeur : sur un mutualisé, ce dossier ne se règle pas depuis WordPress.

<?php
$dir = ini_get( 'upload_tmp_dir' ) ?: sys_get_temp_dir();
echo $dir . ' : ' . ( is_writable( $dir ) ? 'accessible en écriture' : 'NON accessible en écriture' );
$libre = @disk_free_space( $dir );
echo ' / espace libre : ' . ( false === $libre ? 'inconnu' : round( $libre / 1048576 ) . ' Mo' );

Vérifier l’antivirus de l’hébergement

Sur les hébergements équipés d’un antivirus en temps réel (Imunify360, ClamAV, Maldet), un fichier jugé suspect est supprimé ou mis en quarantaine pendant son envoi, ce qui produit exactement ce message. Regardez le journal de l’antivirus dans l’espace client, ou demandez à l’hébergeur s’il a bloqué un fichier à l’heure de votre essai. Une extension en .zip ou un fichier contenant du code est le cas le plus fréquent.

Corriger le dossier sur un serveur dédié ou un VPS

Vérifiez la place et le nombre de fichiers disponibles dans /tmp avec df -h /tmp et df -i /tmp : un /tmp monté en mémoire (tmpfs) est souvent limité à quelques centaines de Mo. Le plus fiable est de donner à PHP-FPM un dossier temporaire dédié, en dehors du dossier public, appartenant à l’utilisateur qui exécute PHP, puis de redémarrer PHP-FPM. Si une restriction open_basedir est active, elle doit inclure ce dossier. Derrière Nginx, le corps de la requête transite aussi par client_body_temp_path, qui doit disposer de la même marge.

; dans le pool PHP-FPM du site (exemple : /etc/php/8.3/fpm/pool.d/site.conf)
php_admin_value[upload_tmp_dir] = /var/www/site/tmp
php_admin_value[sys_temp_dir] = /var/www/site/tmp

Faites une sauvegarde complète du site, fichiers et base de données, avant toute manipulation.

Un autre message d'erreur ? Collez-le dans le décodeur : il le reconnaît et vous oriente vers la bonne fiche.

Ouvrir le décodeur