Files
proxmox-selfservice/qa-tool/htdocs/api/health.php
Sven Steinert fce31ebcd7 Viel neues
2026-04-30 12:06:00 +02:00

30 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
header('Content-Type: application/json; charset=utf-8');
$status = ['ok'=>true, 'checks'=>[]];
try {
require_once __DIR__ . '/../config/config.php';
$status['checks']['php'] = ['pdo'=>extension_loaded('pdo'), 'pdo_mysql'=>extension_loaded('pdo_mysql')];
// DB-Ping
$dsn = "mysql:host={$db_host};port={$db_port};dbname={$db_name};charset=utf8mb4";
$pdo = new PDO($dsn, $db_user, $db_pass, [PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION]);
$pdo->query('SELECT 1');
$status['checks']['db'] = 'ok';
// Schreibtest PDF-Pfad (ohne Datei anzulegen)
$dir = rtrim($pdf_storage_dir ?? (__DIR__.'/../storage/reports'), '/');
$status['checks']['pdf_dir'] = ['path'=>$dir, 'exists'=>is_dir($dir), 'writable'=>is_writable($dir)];
$probe = @file_put_contents($dir.'/.__probe__.tmp', 'x');
if ($probe !== false) { @unlink($dir.'/.__probe__.tmp'); }
$status['checks']['pdf_dir']['probe_write'] = ($probe !== false);
} catch (Throwable $e) {
$status['ok'] = false;
$status['error'] = $e->getMessage();
}
echo json_encode($status);