> /var/log/steuerkram-import.log 2>&1 */ declare(strict_types=1); chdir(dirname(__DIR__)); // DB-Zugangsdaten aus .env laden (für CLI-Kontext ohne Apache-Umgebung) if (file_exists('.env')) { foreach (file('.env', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) { if (str_starts_with(trim($line), '#') || !str_contains($line, '=')) { continue; } [$key, $value] = explode('=', $line, 2); $key = trim($key); $value = trim($value, " \t\n\r\0\x0B\"'"); if (!array_key_exists($key, $_ENV)) { $_ENV[$key] = $value; putenv("{$key}={$value}"); } } } require_once 'vendor/autoload.php'; use Steuerkram\Config; use Steuerkram\Services\NextcloudImportService; Config::load(); // Database verbindet sich lazy über Config::get() $start = microtime(true); echo '[nextcloud-import] Start: ' . date('Y-m-d H:i:s') . PHP_EOL; $svc = new NextcloudImportService(); $result = $svc->import(); foreach ($result['details'] as $line) { echo '[nextcloud-import] ' . $line . PHP_EOL; } $elapsed = round(microtime(true) - $start, 2); echo sprintf( '[nextcloud-import] Fertig in %ss – importiert: %d, übersprungen: %d, Fehler: %d' . PHP_EOL, $elapsed, $result['imported'], $result['skipped'], $result['errors'], ); exit($result['errors'] > 0 ? 1 : 0);