diff --git a/src/Discovery/BundleDiscovery.php b/src/Discovery/BundleDiscovery.php index 503e196..1cf8c9c 100644 --- a/src/Discovery/BundleDiscovery.php +++ b/src/Discovery/BundleDiscovery.php @@ -126,7 +126,7 @@ private function composerBundle(string $packageName): ?BundleMetadata $composerFile = sprintf('%s/composer.json', $installPath); - if (!is_file($composerFile)) { + if (!$this->knownComposerFile($composerFile)) { return null; } @@ -457,7 +457,7 @@ private function requirementsActive(array $requirements): bool $composerFile = sprintf('%s/composer.json', $installPath); - if (!is_file($composerFile)) { + if (!$this->knownComposerFile($composerFile)) { return false; } @@ -503,6 +503,15 @@ private function kernelRequirements(mixed $kernel): array ); } + /** + * Metadata restored from the manifest cache was validated against the file's + * fingerprint already; only unknown files need a filesystem probe. + */ + private function knownComposerFile(string $composerFile): bool + { + return isset($this->metadata[$composerFile]) || is_file($composerFile); + } + /** @return array */ private function composerMetadata(string $composerFile): array {