pccomponentes/messenger-bundle
Symfony bundle that simplifies asynchronous messaging with Symfony Messenger. It provides ready-to-use configuration for message buses, transports, and middleware, reducing boilerplate and helping PHP applications build reliable background processing and event-driven workflows.
composer require <vendor>/<package>:^4.2 and immediately confirm the Symfony constraint resolved as expected:
composer why symfony/http-kernel
composer show <vendor>/<package> | grep -i symfony
You should see Symfony 6.4+ (or 7.x on Laravel 11+).getPrevious()). That one method governs almost every behaviour you will debug day-to-day.throw new RuntimeException('Import failed', previous: new PDOException('SQLSTATE[HY000] ...'));
Confirm the rendered/logged output shows the inner PDOException rather than the outer RuntimeException. Repeat in the console — this release exists precisely because Symfony 7 changed how wrapped exceptions are detected, so both surfaces need verifying.instanceof ladders in App\Exceptions\Handler::report() / render(), throw domain exceptions that wrap the cause and let the unwrapper surface the root exception. Your handler then only needs to care about the final, meaningful type.HasUserMessage, a render() method, or a report() override). Because unwrapping replaces the wrapper in the pipeline, any per-exception behaviour should live on the inner exception or be resolved via the unwrapped type.artisan.report() via $e->getPrevious() before delegating to the parent.composer update will refuse to install 4.2.1. Options: upgrade to Laravel 11 (Symfony 7), bump the Symfony constraint, or pin the previous <4.2 release. Check composer why-not symfony/http-kernel 6.4 when resolution fails.assertSee assertions, or log-shape tests that encoded the old output.Handler::shouldReport() matches on the wrapper class, unwrapping changes what arrives. Re-check ignore lists and deduplication rules after deploying.HttpException, which may wrap a domain exception) can walk further than you expect. Verify the unwrapper respects a sane depth limit and still reports something meaningful — a null/empty unwrap makes debugging worse, not better.while ($e) { dump(get_class($e)); $e = $e->getPrevious(); } — then compare against what the package reports. The mismatch point tells you whether the issue is your throw site, the package, or the FrameworkBundle version.symfony/http-kernel, symfony/http-foundation, and symfony/error-handler should be on the same minor. Mixed majors produce subtle unwrapping bugs that look like package regressions.composer dump-autoload, php artisan config:clear, php artisan optimize:clear, and restart queue workers (Horizon included) so the new code loads. Stale workers running the old unwrapper are the most common "the fix didn't work" report.How can I help you explore Laravel packages today?