index.php (~lines 27-29): die("Connection failed: " . $conn->connect_error); runs before any auth/routing, on literally any non-API page load.
mysqli::$connect_error typically includes the DB host, username, or specific failure reason (e.g. "Access denied for user 'X'@'Y' (using password: YES)", "Unknown database 'Z'", "Can't connect to MySQL server on 'host' (errno)"). No error_log() call and no styled error page either — a bare die() with no logging trail.
Fix: Catch this, log via error_log(), and render a generic styled error page (see related '' issue for the app's missing 500 page) instead of echoing the raw driver error string to the visitor.
**Severity:** Medium
`index.php` (~lines 27-29): `die("Connection failed: " . $conn->connect_error);` runs before any auth/routing, on literally any non-API page load.
`mysqli::$connect_error` typically includes the DB host, username, or specific failure reason (e.g. "Access denied for user 'X'@'Y' (using password: YES)", "Unknown database 'Z'", "Can't connect to MySQL server on 'host' (errno)"). No `error_log()` call and no styled error page either — a bare `die()` with no logging trail.
**Fix:** Catch this, log via `error_log()`, and render a generic styled error page (see related '' issue for the app's missing 500 page) instead of echoing the raw driver error string to the visitor.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Severity: Medium
index.php(~lines 27-29):die("Connection failed: " . $conn->connect_error);runs before any auth/routing, on literally any non-API page load.mysqli::$connect_errortypically includes the DB host, username, or specific failure reason (e.g. "Access denied for user 'X'@'Y' (using password: YES)", "Unknown database 'Z'", "Can't connect to MySQL server on 'host' (errno)"). Noerror_log()call and no styled error page either — a baredie()with no logging trail.Fix: Catch this, log via
error_log(), and render a generic styled error page (see related '' issue for the app's missing 500 page) instead of echoing the raw driver error string to the visitor.