Commit a641739d authored by catch's avatar catch
Browse files

Issue #3145563 by Charlie ChX Negyesi, NigelCunningham, alexpott, joachim,...

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 84a6dadd)
parent d3d41a47
......@@ -107,7 +107,19 @@ public function match($pathinfo) {
* {@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()));
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment