diff --git i/src/Symfony/Component/Config/ResourceCheckerConfigCache.php w/src/Symfony/Component/Config/ResourceCheckerConfigCache.php index 3a3e6c52bb..5841e3029f 100644 --- i/src/Symfony/Component/Config/ResourceCheckerConfigCache.php +++ w/src/Symfony/Component/Config/ResourceCheckerConfigCache.php @@ -157,10 +157,8 @@ class ResourceCheckerConfigCache implements ConfigCacheInterface try { $meta = unserialize($content); - } catch (\Throwable $e) { - if ($e !== $signalingException) { - throw $e; - } + } catch (\Throwable) { + // nothing to do } finally { restore_error_handler(); ini_set('unserialize_callback_func', $prevUnserializeHandler); diff --git i/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php w/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php index 8747cbecf4..1a5f731669 100644 --- i/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php +++ w/src/Symfony/Component/Config/Tests/ResourceCheckerConfigCacheTest.php @@ -17,6 +17,17 @@ use Symfony\Component\Config\ResourceCheckerConfigCache; use Symfony\Component\Config\ResourceCheckerInterface; use Symfony\Component\Config\Tests\Resource\ResourceStub; +final class MyResource implements \Symfony\Component\Config\Resource\SelfCheckingResourceInterface +{ + public function __construct( + private \DateTimeImmutable $dti + ) {} + + public function isFresh(int $timestamp): bool { return false; } + + public function __toString(): string { return ''; } +} + class ResourceCheckerConfigCacheTest extends TestCase { private $cacheFile = null; @@ -129,6 +140,18 @@ class ResourceCheckerConfigCacheTest extends TestCase $this->assertFalse($cache->isFresh()); } + public function testCacheIsNotFreshWhenUnserializeFails2() + { + $checker = $this->createMock(ResourceCheckerInterface::class); + $cache = new ResourceCheckerConfigCache($this->cacheFile, [$checker]); + $cache->write('foo', [new MyResource(new \DateTimeImmutable('now'))]); + + $metaFile = "{$this->cacheFile}.meta"; + file_put_contents($metaFile, str_replace('-', 'x', file_get_contents($metaFile))); + + $this->assertFalse($cache->isFresh()); + } + public function testCacheKeepsContent() { $cache = new ResourceCheckerConfigCache($this->cacheFile);