OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

post-install-cleanup.php

3 KB
<?php
/**
 * Post-Installation Cleanup
 *
 * Führt Bereinigungsaufgaben nach der Installation durch:
 * - Löscht den Web-Installer
 * - Entfernt temporäre Installer-Daten
 * - Optimiert die Datenbank
 *
 * Ausführung: php bin/post-install-cleanup.php
 */

declare(strict_types=1);

// Nur CLI
if (PHP_SAPI !== 'cli') {
    die('Dieses Script kann nur über die Kommandozeile ausgeführt werden.');
}

define('BASE_PATH', dirname(__DIR__));

echo "===========================================\n";
echo "IT-Dokumentation - Post-Installation Cleanup\n";
echo "===========================================\n\n";

// 1. Installer löschen
$installerFile = BASE_PATH . '/public/install.php';
if (file_exists($installerFile)) {
    if (unlink($installerFile)) {
        echo "[OK] install.php wurde gelöscht\n";
    } else {
        echo "[FEHLER] install.php konnte nicht gelöscht werden\n";
        echo "         Bitte manuell löschen: $installerFile\n";
    }
} else {
    echo "[OK] install.php bereits entfernt\n";
}

// 2. Installer-Konfigurationstabelle bereinigen
$envFile = BASE_PATH . '/.env';
if (file_exists($envFile)) {
    // .env laden
    $env = parse_ini_file($envFile);

    if ($env && !empty($env['DB_HOST'])) {
        try {
            $dsn = sprintf(
                'mysql:host=%s;port=%s;dbname=%s;charset=utf8mb4',
                $env['DB_HOST'],
                $env['DB_PORT'] ?? 3306,
                $env['DB_DATABASE']
            );

            $pdo = new PDO($dsn, $env['DB_USERNAME'], $env['DB_PASSWORD'], [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            ]);

            // Installer-Tabelle löschen
            $pdo->exec('DROP TABLE IF EXISTS _installer_config');
            echo "[OK] Installer-Konfigurationstabelle bereinigt\n";

            // Datenbank optimieren
            $tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN);
            foreach ($tables as $table) {
                $pdo->exec("OPTIMIZE TABLE `$table`");
            }
            echo "[OK] Datenbank-Tabellen optimiert\n";

        } catch (PDOException $e) {
            echo "[WARNUNG] Datenbank-Bereinigung fehlgeschlagen: " . $e->getMessage() . "\n";
        }
    }
}

// 3. Cache leeren
$cacheDir = BASE_PATH . '/storage/cache';
if (is_dir($cacheDir)) {
    $files = glob($cacheDir . '/*');
    $count = 0;
    foreach ($files as $file) {
        if (is_file($file)) {
            unlink($file);
            $count++;
        }
    }
    echo "[OK] Cache geleert ($count Dateien)\n";
}

// 4. Temp-Dateien bereinigen
$tempDir = BASE_PATH . '/storage/temp';
if (is_dir($tempDir)) {
    $files = glob($tempDir . '/*');
    $count = 0;
    foreach ($files as $file) {
        if (is_file($file) && (time() - filemtime($file)) > 3600) {
            unlink($file);
            $count++;
        }
    }
    echo "[OK] Temporäre Dateien bereinigt ($count Dateien)\n";
}

echo "\n===========================================\n";
echo "Cleanup abgeschlossen!\n";
echo "===========================================\n";