&1'; $output = []; $resultCode = 0; exec($command, $output, $resultCode); $joined = trim(implode("\n", $output)); $decoded = json_decode($joined, true); if (is_array($decoded)) { return [ 'ok' => (bool) ($decoded['ok'] ?? false), 'data' => $decoded, 'raw' => $joined, 'command' => $command, ]; } if ($joined !== '') { $lastError = $joined; } elseif ($resultCode !== 0) { $lastError = 'Fehlercode ' . $resultCode . ' bei ' . $pythonBinary; } } return [ 'ok' => false, 'error' => $lastError, ]; } function runPythonApiWithJsonPayloadFile(string $action, array $payload): array { $tempFile = tempnam(sys_get_temp_dir(), 'skyview_py_'); if ($tempFile === false) { return [ 'ok' => false, 'error' => 'Temporäre Datei für Python-Payload konnte nicht erstellt werden.', ]; } $jsonPayload = json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); if ($jsonPayload === false) { @unlink($tempFile); return [ 'ok' => false, 'error' => 'Python-Payload konnte nicht als JSON kodiert werden.', ]; } if (file_put_contents($tempFile, $jsonPayload) === false) { @unlink($tempFile); return [ 'ok' => false, 'error' => 'Temporäre Datei für Python-Payload konnte nicht geschrieben werden.', ]; } try { return runPythonApi($action, ['@' . $tempFile]); } finally { @unlink($tempFile); } }