#!/usr/bin/env php '34', 'notice' => '32', 'warn' => '33', 'err' => '31'][$level] ?? '37'; echo sprintf("\e[%sm[%s]\e[0m %s\n", $color, strtoupper($level), $msg); } /** * Nettoie un fichier local en comparant ses valeurs avec la base */ function clean_local_config($base_file, $local_file) { // On inclut les fichiers pour récupérer les tableaux de config $base_cfg = include $base_file; $local_cfg = include $local_file; if (!is_array($base_cfg) || !is_array($local_cfg)) { return false; } $new_local_cfg = $local_cfg; $removed_keys = []; foreach ($local_cfg as $key => $value) { // Si la clé existe en base ET que la valeur est strictement identique if (array_key_exists($key, $base_cfg) && $base_cfg[$key] === $value) { unset($new_local_cfg[$key]); $removed_keys[] = $key; } } if (empty($removed_keys)) { log_clean('info', basename($local_file) . " est déjà optimisé."); return true; } // Reconstruction du fichier PHP proprement $content = " $value) { $val_export = var_export($value, true); $content .= " '$key' => $val_export,\n"; } $content .= "];\n"; if (file_put_contents($local_file, $content)) { log_clean('notice', basename($local_file) . " nettoyé. Clés supprimées (identiques à la base) : " . implode(', ', $removed_keys)); return true; } return false; } // --- Main --- log_clean('info', "Début de l'optimisation des configurations locales..."); $base_files = glob(CONF_DIR . '/*.php'); foreach ($base_files as $base_conf) { // On ignore les fichiers .local.php et .conf.local.php if (str_contains($base_conf, '.local.')) continue; // Détermination du nom du fichier local correspondant // Gère tes deux formats : monitoring.local.conf.php et alert-engine.conf.local.php $local_conf = str_replace('.conf.php', '.conf.local.php', $base_conf); if (!file_exists($local_conf)) { $local_conf = str_replace('.php', '.local.php', $base_conf); } if (file_exists($local_conf)) { clean_local_config($base_conf, $local_conf); } } log_clean('info', "Optimisation terminée.");