Issue #3145563 by Charlie ChX Negyesi, NigelCunningham, alexpott, joachim, longwave, catch, tyler36: Route serialization incompatibilities between PHP 7.4 and 7.3 (9.x only)
(cherry picked from commit 84a6dadd95
)
merge-requests/674/head
parent
d3d41a4798
commit
a641739d27
|
@ -107,7 +107,19 @@ class Router extends UrlMatcher implements RequestMatcherInterface, RouterInterf
|
|||
* {@inheritdoc}
|
||||
*/
|
||||
public function matchRequest(Request $request) {
|
||||
$collection = $this->getInitialRouteCollection($request);
|
||||
try {
|
||||
$collection = $this->getInitialRouteCollection($request);
|
||||
}
|
||||
// PHP 7.4 introduces changes to its serialization format, which mean that
|
||||
// older versions of PHP are unable to unserialize data that is serialized
|
||||
// in PHP 7.4. If the site's version of PHP has been downgraded, then
|
||||
// attempting to unserialize routes from the database will fail, and so the
|
||||
// router needs to be rebuilt on the current PHP version.
|
||||
// See https://www.php.net/manual/en/migration74.incompatible.php.
|
||||
catch (\TypeError $e) {
|
||||
\Drupal::service('router.builder')->rebuild();
|
||||
$collection = $this->getInitialRouteCollection($request);
|
||||
}
|
||||
if ($collection->count() === 0) {
|
||||
throw new ResourceNotFoundException(sprintf('No routes found for "%s".', $this->currentPath->getPath()));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue