2 * 1024 * 1024) { if (empty($_FILES)) { // Don't block file uploads http_response_code(413); header('Content-Type: application/json'); echo json_encode(['success' => false, 'message' => 'Request body too large'], JSON_UNESCAPED_UNICODE); exit; } } // 6. PSR-4 Autoloader (PascalCase-aware for Linux compatibility) spl_autoload_register(function ($class) { $prefix = 'App\\'; $base_dir = APP_PATH . '/'; $len = strlen($prefix); if (strncmp($prefix, $class, $len) !== 0) return; $relative_class = substr($class, $len); $parts = explode('\\', $relative_class); $filename = array_pop($parts) . '.php'; $dir = implode('/', $parts); // No strtolower — preserves PascalCase on Linux $file = $base_dir . ($dir ? $dir . '/' : '') . $filename; if (file_exists($file)) { require $file; } }); // 7. Response Utility require_once APP_PATH . '/bootstrap/response.php'; // 8. Global Auth Helper require_once APP_PATH . '/bootstrap/auth.php';