> /var/log/steuerkram-import.log 2>&1 * * Umgebungsvariablen (in .env oder Systemumgebung): * NEXTCLOUD_URL Basis-URL, z.B. https://cloud.example.com * NEXTCLOUD_USER Benutzername * NEXTCLOUD_PASS Passwort oder App-Passwort * NEXTCLOUD_FOLDER Import-Ordner, z.B. /Belege/Import (Standard: /Belege/Import) * NEXTCLOUD_DONE Erledigte-Ordner, z.B. /Belege/Importiert (leer = Datei löschen) */ declare(strict_types=1); chdir(dirname(__DIR__)); // .env laden falls vorhanden 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);