netgescon-day0/docs/incidents/2026-03-09-500-permissioni-log-e-parse-error.md

4.0 KiB

Incident Runbook - 2026-03-09

Titolo

500 in produzione e sviluppo: permessi laravel.log + parse error Filament.

Sintomi Osservati

  • Produzione: UnexpectedValueException su vendor/monolog/.../StreamHandler.php.
  • Messaggio: The stream or file "/var/www/netgescon/storage/logs/laravel.log" could not be opened in append mode: Permission denied.
  • Sviluppo: 500 Internal Server Error su http://192.168.0.200:8000/admin-filament.

Cause Radice

  1. Produzione - log non scrivibile dal web server
  • File: /var/www/netgescon/storage/logs/laravel.log
  • Stato trovato: owner/group michele:michele, mode 775.
  • Processo web: nginx con utente/gruppo www-data.
  • Effetto: Monolog non riesce ad aprire il log in append.
  1. Sviluppo - errore sintattico PHP
  • File 1: app/Providers/Filament/AdminFilamentPanelProvider.php
  • Problema: catena fluent Filament spezzata da parentesi/brace errate.
  • File 2: app/Filament/Pages/Condomini/NominativiStabile.php (linea area ~436).
  • Problema: concatenazione stringa SQL spezzata (. fuori espressione).

Fix Applicati

A) Permessi Log Produzione

Comandi eseguiti:

chgrp www-data /var/www/netgescon/storage/logs/laravel.log
chmod 664 /var/www/netgescon/storage/logs/laravel.log
find /var/www/netgescon/storage/logs -maxdepth 1 -type f -name '*.log' -exec chgrp www-data {} \; -exec chmod 664 {} \;

Esito atteso:

  • laravel.log in michele:www-data con permessi -rw-rw-r--.

B) Parse Error Sviluppo

  • Ripristinata sintassi valida in:
  • app/Providers/Filament/AdminFilamentPanelProvider.php
  • app/Filament/Pages/Condomini/NominativiStabile.php

Verifica:

php -l app/Providers/Filament/AdminFilamentPanelProvider.php
php -l app/Filament/Pages/Condomini/NominativiStabile.php
php artisan about

Esito ottenuto:

  • No syntax errors detected sui file.
  • php artisan about torna operativo.

C) Allineamento Produzione

File copiati da sviluppo a produzione:

  • app/Providers/Filament/AdminFilamentPanelProvider.php
  • app/Filament/Pages/Condomini/NominativiStabile.php

Pulizia cache:

cd /var/www/netgescon
php artisan optimize:clear

Check Rapido Post-Incident

  1. Verifica sintassi:
cd /home/michele/netgescon/netgescon-laravel
php -l app/Providers/Filament/AdminFilamentPanelProvider.php
php -l app/Filament/Pages/Condomini/NominativiStabile.php
  1. Verifica bootstrap Laravel (sviluppo):
php artisan about
  1. Verifica endpoint sviluppo:
curl -I http://192.168.0.200:8000/admin-filament

Atteso: 302 verso login (non 500).

  1. Verifica log produzione:
ls -l /var/www/netgescon/storage/logs/laravel.log

Atteso: gruppo www-data e write abilitata al gruppo.

Procedura Di Ripartenza Veloce (Se "Salta Tutto")

  1. Correggi permessi storage/cache su produzione:
chgrp -R www-data /var/www/netgescon/storage /var/www/netgescon/bootstrap/cache
find /var/www/netgescon/storage -type d -exec chmod 2775 {} \;
find /var/www/netgescon/storage -type f -exec chmod 664 {} \;
find /var/www/netgescon/bootstrap/cache -type d -exec chmod 2775 {} \;
find /var/www/netgescon/bootstrap/cache -type f -exec chmod 664 {} \;
  1. Riallinea file critici da sorgente:
cp /home/michele/netgescon/netgescon-laravel/app/Providers/Filament/AdminFilamentPanelProvider.php /var/www/netgescon/app/Providers/Filament/AdminFilamentPanelProvider.php
cp /home/michele/netgescon/netgescon-laravel/app/Filament/Pages/Condomini/NominativiStabile.php /var/www/netgescon/app/Filament/Pages/Condomini/NominativiStabile.php
  1. Pulisci cache Laravel:
cd /var/www/netgescon
php artisan optimize:clear
  1. Verifica endpoint e log:
curl -I http://192.168.0.200:8000/admin-filament
ls -l /var/www/netgescon/storage/logs/laravel.log

Note Preventive

  • Evitare copy/sync che riscrivono ownership in storage/logs.
  • Dopo hotfix su file PHP, eseguire sempre php -l prima del deploy.
  • Se compare 500 su Filament, fare subito php artisan about per intercettare parse error in bootstrap.