fix: resolve RedisCache array offset error and improve discovery diagnostics

- Fix RedisCache driver to handle MGET failures gracefully with fallback
- Add comprehensive discovery context comparison debug tools
- Identify root cause: WEB context discovery missing 166 items vs CLI
- WEB context missing RequestFactory class entirely (52 vs 69 commands)
- Improved exception handling with detailed binding diagnostics
This commit is contained in:
2025-09-12 20:05:18 +02:00
parent 8040d3e7a5
commit e30753ba0e
46990 changed files with 10789682 additions and 89639 deletions

View File

@@ -34,9 +34,13 @@ final readonly class MiddlewareManager implements MiddlewareManagerInterface
);
}
/**
* @return array<int, string>
*/
private function buildMiddlewareStack(): array
{
// Explizite Reihenfolge definieren - wichtigste zuerst
/** @var array<int, string> */
$explicitOrder = [
// 0. Exception Handling - MUSS absolut zuerst kommen, um alle Exceptions zu fangen
\App\Framework\Http\Middlewares\ExceptionHandlingMiddleware::class,
@@ -44,50 +48,53 @@ final readonly class MiddlewareManager implements MiddlewareManagerInterface
// 1. System und Error Handling
\App\Framework\Http\Middlewares\RequestIdMiddleware::class,
// 2. Security und DDoS Protection
// 2. Production Security - MUST come early to block routes
\App\Framework\Http\Middlewares\ProductionSecurityMiddleware::class,
// 3. Security und DDoS Protection
DDoSProtectionMiddleware::class,
WafMiddleware::class,
// 3. Session - MUSS vor Auth und CSRF kommen!
// 4. Session - MUSS vor Auth und CSRF kommen!
\App\Framework\Http\Session\SessionMiddleware::class,
// 4. Security und Rate Limiting
// 5. Security und Rate Limiting
RateLimitMiddleware::class,
#\App\Application\Security\Middleware\SecurityEventMiddleware::class,
// 5. Headers und CORS
// 6. Headers und CORS
\App\Framework\Http\Middlewares\SecurityHeaderMiddleware::class,
\App\Framework\Http\Middlewares\RemovePoweredByMiddleware::class,
\App\Framework\Http\Middlewares\CORSMiddleware::class,
// 6. Authentication und CSRF (brauchen Session)
// 7. Authentication und CSRF (brauchen Session)
\App\Framework\Http\Middlewares\AuthMiddleware::class,
\App\Framework\Http\Middlewares\CsrfMiddleware::class,
\App\Framework\Http\Middlewares\HoneypotMiddleware::class,
// 7. Routing und Request Processing
// 8. Routing und Request Processing
\App\Framework\Http\Middlewares\RoutingMiddleware::class,
\App\Framework\Http\Middlewares\ControllerRequestMiddleware::class,
// 8. Content und Static Files
// 9. Content und Static Files
#\App\Framework\Http\Middlewares\ServeStaticFilesMiddleware::class,
\App\Framework\Http\Middlewares\ResponseGeneratorMiddleware::class,
\App\Framework\Http\Middlewares\FormDataResponseMiddleware::class, // Temporarily disabled
// 9. Monitoring und Analytics
// 10. Monitoring und Analytics
\App\Framework\Analytics\Middleware\AnalyticsMiddleware::class,
\App\Framework\Performance\Middleware\RequestPerformanceMiddleware::class,
\App\Framework\Performance\Middleware\RoutingPerformanceMiddleware::class,
\App\Framework\Performance\Middleware\ControllerPerformanceMiddleware::class,
\App\Framework\Tracing\TracingMiddleware::class,
// 10. Logging (am Ende)
// 11. Logging (am Ende)
\App\Framework\Http\Middlewares\RequestLoggingMiddleware::class,
\App\Framework\Http\Middlewares\LoggingMiddleware::class,
\App\Framework\Performance\Middleware\PerformanceDebugMiddleware::class,
\App\Framework\Security\RequestSigning\RequestSigningMiddleware::class,
// 11. FALLBACK - Absolut letztes Middleware (nur wenn keine Response vorhanden)
// 12. FALLBACK - Absolut letztes Middleware (nur wenn keine Response vorhanden)
\App\Framework\Http\Middlewares\DefaultResponseMiddleware::class,
];
@@ -113,8 +120,8 @@ final readonly class MiddlewareManager implements MiddlewareManagerInterface
/**
* Resolve middleware dependencies using constructor analysis
* @param array<string> $middlewares
* @return array<string>
* @param array<int, string> $middlewares
* @return array<int, string>
*/
private function resolveDependencies(array $middlewares): array
{
@@ -168,7 +175,7 @@ final readonly class MiddlewareManager implements MiddlewareManagerInterface
/**
* Get the explicit order array (for testing and debugging)
* @return array<string>
* @return array<int, string>
*/
private function getExplicitOrder(): array
{
@@ -287,8 +294,12 @@ final readonly class MiddlewareManager implements MiddlewareManagerInterface
return MiddlewarePriority::BUSINESS_LOGIC->value;
}
// Methode zum Sortieren der Middleware nach Priorität
private function sortMiddlewaresByPriority($middlewares): array
/**
* Methode zum Sortieren der Middleware nach Priorität
* @param array<int, object|string> $middlewares
* @return array<int, object|string>
*/
private function sortMiddlewaresByPriority(array $middlewares): array
{
usort($middlewares, function (object|string $a, object|string $b) {
$priorityA = $this->getMiddlewarePriority($a);
@@ -343,6 +354,8 @@ final readonly class MiddlewareManager implements MiddlewareManagerInterface
/**
* Get cache statistics for debugging
*
* @return array<string, string>
*/
public function getCacheStats(): array
{