•  » Installation
  •  » atal error: Uncaught RuntimeException: The file could not be written

#1 2026-09-04 17:06:32

Raoul
Membre
2026-09-04
3

atal error: Uncaught RuntimeException: The file could not be written

Bonjour,

Je rencontre un problème avec Piwigo qui concerne l'écriture des logs.

Voici le message d'erreur complet :
Fatal error: Uncaught RuntimeException: The file could not be written to.
Check that appropriate permissions have been set. in Logger.class.php:134
Stack trace:
#0 Logger.class.php(306): Logger->open()
#1 Logger.class.php(295): Logger->write()
#2 Logger.class.php(202): Logger->log()
#3 functions.inc.php(2971): Logger->info()
#4 include/page_tail.php(45): pwg_unique_exec_begins()
#5 about.php(47): include('...')
#6 {main} thrown in include/Logger.class.php on line 134

Le problème est en lien avec SELinux qui est activé et qui empêche l'écriture de logs mais je n'arrive pas à trouver quel est ce fichier de logs en question, dans les fichiers php mentionnés je ne trouve pas cette info.

Je ne peux pas non plus accéder à la partie admin du site à cause de la même erreur.

Seule solution désactiver SELinux mais j'aimerais éviter...

Merci d'avance pour votre aide.

Version de Piwigo: 16.4.0
Version de PHP: 8.5.9
Version de MySQL: 12.3.2-MariaDB

Hors ligne

#2 2026-09-04 18:10:14

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13878

Re: atal error: Uncaught RuntimeException: The file could not be written

Bonjour,
Le fichier error_log se trouve à la racine de Piwigo.


Indépendant et autodidacte. Solutions sur mesures : Prestations

LE FAIRE EST LE RÉVÉLATEUR DE L'ÊTRE

Hors ligne

#3 2026-09-04 19:04:57

polowigo
Membre
2019-04-11
815

Re: atal error: Uncaught RuntimeException: The file could not be written

Bonsoir,
D'après la ligne 134, et donc la ligne 108, ça ressemble aux fichiers log qui, par défaut, se trouvent dans /_data/logs.

Hors ligne

#4 2026-09-04 21:13:30

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13878

Re: atal error: Uncaught RuntimeException: The file could not be written

Le message d'erreur (The file could not be written to) associé à SELinux actif est cohérent avec un souci de contexte de sécurité SELinux, distinct des permissions Unix classiques (chmod/chown). Un dossier peut avoir des droits 755/775 corrects tout en étant refusé en écriture par SELinux si son contexte n'est pas le bon.

1. Confirmer que SELinux est bien en cause

Code:

sudo ausearch -m avc -ts recent

ou, selon la distribution :

Code:

sudo journalctl -t setroubleshoot --since "1 hour ago"

Si ces commandes affichent des lignes "denied" faisant référence à Apache/PHP-FPM et au chemin de _data/logs, la cause est confirmée.

2. Vérifier le contexte actuel du dossier

Code:

ls -Zd _data/logs

Le contexte attendu pour un dossier accessible en écriture par le serveur web est généralement httpd_sys_rw_content_t. Si vous voyez autre chose (souvent httpd_sys_content_t, qui est lecture seule), c'est la cause du blocage.

3. Corriger le contexte, de façon persistante

Un simple chcon ne survit pas à un restorecon global ni à une réinstallation de règles SELinux. Mieux vaut déclarer la règle avant d'appliquer :

Code:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/chemin/vers/piwigo/_data(/.*)?"
sudo restorecon -Rv /chemin/vers/piwigo/_data

(remplacer /chemin/vers/piwigo par le chemin réel d'installation)

Si la commande semanage n'existe pas, installer le paquet policycoreutils-python-utils (ou équivalent selon la distribution).

4. Vérifier ensuite

Une fois la commande appliquée, retenter l'accès à l'admin Piwigo. Si le souci persiste, il peut aussi concerner d'autres sous-dossiers accessibles en écriture par Piwigo (_data/cache, _data/upload, _data/tmp, galleries/, plugins/, etc.) — la même commande semanage/restorecon peut être répétée en ciblant _data dans son ensemble comme ci-dessus, qui couvre tous ses sous-dossiers.

Éviter de désactiver SELinux entièrement (setenforce 0) : c'est une solution de facilité qui supprime une couche de sécurité importante plutôt que de corriger le contexte concerné.

Dites-moi si les commandes d'audit remontent bien des "denied" sur _data/logs, ça confirmera le diagnostic avant d'aller plus loin.

J'ai ouvert une issue [Github] Piwigo issue #2580 car le problème met en évidence le défaut.

Dernière modification par Gotcha (2026-09-04 21:26:37)


Indépendant et autodidacte. Solutions sur mesures : Prestations

LE FAIRE EST LE RÉVÉLATEUR DE L'ÊTRE

Hors ligne

#5 2026-09-07 12:22:48

Raoul
Membre
2026-09-04
3

Re: atal error: Uncaught RuntimeException: The file could not be written

Merci beaucoup pour vos différents retours.

Je confirme que SELinux est bien en cause, j'ai bien des "denied" avec le retour de la commande

Code:

sudo ausearch -m avc -ts recent

Voici le contexte actuel de _data/logs (on voit en effet qu'il n'y a qu'un accès en lecture)

Code:

system_u:object_r:httpd_log_t:s0 _data/logs/

Lorsque je tente de changer le contexte de manière persistante, curieusement cela ne semble pas faire effet. Je n'ai pourtant pas de message d'erreur.

Code:

sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/htdocs/piwigo/_data/(/.*)?"
sudo restorecon -Rv /var/www/htdocs/piwigo/_data

En effet en listant le contexte je garde ce que j'avais précédemment :

Code:

sudo ls -Zd _data/logs/
system_u:object_r:httpd_log_t:s0 _data/logs/

Je continue de chercher de mon côté, si je trouve une solution, je la publierai ici

Hors ligne

#6 2026-09-07 14:51:36

Raoul
Membre
2026-09-04
3

Re: atal error: Uncaught RuntimeException: The file could not be written

La commande suivante a résolu mon problème :

Code:

sudo chcon -R -t httpd_sys_rw_content_t _data/logs

Cette fois-ci cela a bien été mis à jour :

Code:

sudo ls -Zd _data/logs/
system_u:object_r:httpd_sys_rw_content_t:s0 _data/logs

Mais un éventuel restorecon me remet les droits précédent.
Avec semanage j'avais testé un -m pour modifier une politique déjà présente sans plus de succès.

Je crains que cela ne soit pas persistent, mais bon dans l'immédiat cela fonctionne : j'ai de nouveau accès  à la partie admin.

Encore un grand merci pour l'aide

Hors ligne

  •  » Installation
  •  » atal error: Uncaught RuntimeException: The file could not be written

Pied de page des forums

Propulsé par FluxBB