lecchese configurato OKu568594947_pren_mesa → file .sql salvato in locale esportatou568594947_mgsw_prodotti → file .sql salvato in locale esportatosudo mariadb (autenticazione unix_socket, senza password root)mensa_prenotazioni con CHARACTER SET utf8mb4 creatomensa_prodotti con CHARACTER SET utf8mb4 creatomensa_user@localhost con password sicura creatoGRANT ALL PRIVILEGES su entrambi i database → FLUSH PRIVILEGESCREATE DATABASE mensa_prenotazioni CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE mensa_prodotti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'mensa_user'@'localhost' IDENTIFIED BY 'PASSWORD_SCELTA'; GRANT ALL PRIVILEGES ON mensa_prenotazioni.* TO 'mensa_user'@'localhost'; GRANT ALL PRIVILEGES ON mensa_prodotti.* TO 'mensa_user'@'localhost'; FLUSH PRIVILEGES;
mariadb -u mensa_user -p FALLITOsudo mariadb eseguito ALTER USER 'mensa_user'@'localhost' IDENTIFIED BY 'password' risoltoCREATE VIEW v_buoni_saldo con DEFINER=`u568594947_pren_mesa`@`127.0.0.1` — richiede privilegio SUPER non disponibile per utenti normaliDROP DATABASE e ricreazione pulita, poi import come root tramite sudo mariadb risoltoDROP VIEW IF EXISTS v_buoni_saldo + ricreazione con DEFINER=mensa_user@localhost risoltoSHOW TABLES; → 12 tabelle presenti OKsudo mariadb mensa_prenotazioni < ~/u568594947_pren_mesa.sql
mgsw_prodotti_raspberry.sql con soli dati necessarisudo mariadb mensa_prodotti < ~/mgsw_prodotti_raspberry.sql OKprenotazionimensa in /var/www/html/Mensa/prenotazionimensa/ trasferitoinclude/ (con file di connessione DB) copiata in /var/www/html/include/ trasferito/var/www/html/include/.htaccess con Require all denied per bloccare l'accesso web diretto alla cartella dei file di connessione sicurezzaRequire all denied
db_conn_prenotazioni.php: host, dbname, user e password aggiornati per connessione locale aggiornatodb_conn.php: host, dbname, user e password aggiornati per connessione locale aggiornatodb_conn.php: commento con slash singolo / Crea connessione invece di // Crea connessione → causava un Parse error PHP fix$host = 'localhost'; $dbname = 'mensa_prenotazioni'; $user = 'mensa_user'; $pass = 'PASSWORD_SCELTA';
$host = 'localhost'; $dbname = 'mensa_prodotti'; $user = 'mensa_user'; $pass = 'PASSWORD_SCELTA';
lecchese (permette upload via FileZilla), gruppo www-data (Apache può leggere i file)cuoca/ con permessi 775 per permettere scrittura file last_scan*.json da parte di Apache (www-data) notasudo chown -R lecchese:www-data /var/www/html/Mensa/
sudo chmod -R 755 /var/www/html/Mensa/
sudo find /var/www/html/Mensa/ -name "*.php" -exec chmod 644 {} \;
sudo chmod 775 /var/www/html/Mensa/prenotazionimensa/cuoca/
auth_mensa.php era progettato per funzionare con il sistema store di mydigitaltools.it — in installazione locale privata il DB prodotti non è obbligatoriorequire_once __DIR__ . "/db_conn.php" — il DB prodotti non blocca l'avvio modificato/login.php a /Mensa/prenotazionimensa/login.php (path corretto per installazione in sottocartella) modificatoif ($storeUserId > 0 && ($pdoProd instanceof PDO || $connProd instanceof mysqli)) {
// controllo licenza solo se DB prodotti è connesso
}
/Mensa/prenotazionimensa/Mensa/prenotazionimensa/admin/ → pagina non trovata$WEB_PREFIX = /Mensa/prenotazionimensa concatenato a $next = Mensa/prenotazionimensa/admin/ → prefisso duplicato$next = $req (path assoluto con slash iniziale, es. /Mensa/prenotazionimensa/admin/) risoltoltrim($next, "/") per preservare lo slash iniziale risolto$dest = ($next[0] === '/') ? $next : $WEB_PREFIX . "/" . $next risolto<link href="/admin/style_admin.css"> hardcoded senza $WEB_PREFIX → HTTP 404, pannello admin senza stili$WEB_PREFIX risoltosudo sed -i dopo aver risolto i permessi<link rel="stylesheet" href="<?= htmlspecialchars($WEB_PREFIX, ENT_QUOTES) ?>/admin/style_admin.css">
display.php non mostrava nullalast_scan_16.json e last_scan.json copiati dal PC con proprietario lecchese → Apache (www-data) non poteva sovrascriverli durante la scansionescan_relay.php ricrea i file direttamente come www-data risoltosudo rm /var/www/html/Mensa/prenotazionimensa/cuoca/last_scan*.json
MariaDB non ha RANDOM_BYTES() (funzione MySQL). Usare REPLACE(UUID(),'-','') oppure MD5(RAND()) come alternativa.
Il comando di accesso su Raspberry è sudo mariadb. L'autenticazione avviene tramite unix_socket, non serve password per root.
I comandi di import ed export usano mariadb invece di mysql. Esempio: sudo mariadb db_name < file.sql
La cartella include/ è dentro /var/www/html/ ma protetta da .htaccess con Require all denied. Nessun accesso web diretto ai file di connessione DB.
La cartella cuoca/ deve rimanere con permessi 775 per permettere la scrittura dei file last_scan*.json da parte di Apache (www-data).
Il proprietario dei file è lecchese (non www-data) per permettere upload via FileZilla. Il gruppo è www-data per la lettura Apache.
azienda_id = 16, senza toccare la configurazione.u568594947_pren_mesa → Esporta → SQL → Esegui. Salva il file .sql sul PC..sql nella home directory /home/lecchese/# Crea DB temporaneo e importa il dump di Hostinger
sudo mariadb -e "CREATE DATABASE temp_mensa CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mariadb temp_mensa < ~/u568594947_pren_mesa.sql
-- Tabella azienda DELETE FROM mensa_prenotazioni.azienda WHERE id = 16; INSERT INTO mensa_prenotazioni.azienda SELECT * FROM temp_mensa.azienda WHERE id = 16; -- Dipendenti DELETE FROM mensa_prenotazioni.dipendente WHERE azienda_id = 16; INSERT INTO mensa_prenotazioni.dipendente SELECT * FROM temp_mensa.dipendente WHERE azienda_id = 16; -- Prenotazioni DELETE FROM mensa_prenotazioni.prenotazione WHERE azienda_id = 16; INSERT INTO mensa_prenotazioni.prenotazione SELECT * FROM temp_mensa.prenotazione WHERE azienda_id = 16; -- Piatti sostituzione (se presenti) DELETE FROM mensa_prenotazioni.azienda_pasto_sostituzione WHERE azienda_id = 16; INSERT INTO mensa_prenotazioni.azienda_pasto_sostituzione SELECT * FROM temp_mensa.azienda_pasto_sostituzione WHERE azienda_id = 16; -- Sessioni auth — forza nuovo login a tutti DELETE FROM mensa_prenotazioni.auth_sessions WHERE dipendente_id IN ( SELECT id FROM mensa_prenotazioni.dipendente WHERE azienda_id = 16 ); EXIT;
sudo mariadb -e "DROP DATABASE temp_mensa;" sudo rm -f /var/www/html/Mensa/prenotazionimensa/cuoca/last_scan*.json