From 65d1bd35c57789d8649c1ee0f4cf4d13ffcbb27d Mon Sep 17 00:00:00 2001 From: Aaron Scherer Date: Mon, 30 Oct 2017 09:56:02 -0700 Subject: [PATCH 1/3] Throwing exception if redis and predis unavailable If the redis extension and predis are unavailable, line 137 throws an exception stating that \Predis\Client is not a class. --- src/Symfony/Component/Cache/Traits/RedisTrait.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php index 467e602070c7a..820d0ddfa1ee2 100644 --- a/src/Symfony/Component/Cache/Traits/RedisTrait.php +++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php @@ -108,6 +108,9 @@ public static function createConnection($dsn, array $options = array()) $params += $query; } $params += $options + self::$defaultConnectionOptions; + if ($params['class'] === null && !extension_loaded('redis') && !class_exists(\Predis\Client::class)) { + throw new \RuntimeException(sprintf("Cannot find the redis extension, and predis/predis is not installed: %s", $dsn)); + } $class = null === $params['class'] ? (extension_loaded('redis') ? \Redis::class : \Predis\Client::class) : $params['class']; if (is_a($class, \Redis::class, true)) { From 43d1d3c92713190f4eb98bdac83d4bd8a430a020 Mon Sep 17 00:00:00 2001 From: Aaron Scherer Date: Mon, 30 Oct 2017 09:59:13 -0700 Subject: [PATCH 2/3] Fixing style issues --- src/Symfony/Component/Cache/Traits/RedisTrait.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php index 820d0ddfa1ee2..681c3513ad307 100644 --- a/src/Symfony/Component/Cache/Traits/RedisTrait.php +++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php @@ -108,8 +108,8 @@ public static function createConnection($dsn, array $options = array()) $params += $query; } $params += $options + self::$defaultConnectionOptions; - if ($params['class'] === null && !extension_loaded('redis') && !class_exists(\Predis\Client::class)) { - throw new \RuntimeException(sprintf("Cannot find the redis extension, and predis/predis is not installed: %s", $dsn)); + if (null === $params['class'] && !extension_loaded('redis') && !class_exists(\Predis\Client::class)) { + throw new \RuntimeException(sprintf('Cannot find the "redis" extension, and "predis/predis" is not installed: %s', $dsn)); } $class = null === $params['class'] ? (extension_loaded('redis') ? \Redis::class : \Predis\Client::class) : $params['class']; From 3ffe1b7cad44f4fc8699344a1204c8695963ef53 Mon Sep 17 00:00:00 2001 From: Aaron Scherer Date: Mon, 30 Oct 2017 10:03:18 -0700 Subject: [PATCH 3/3] Update RedisTrait.php --- src/Symfony/Component/Cache/Traits/RedisTrait.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Cache/Traits/RedisTrait.php b/src/Symfony/Component/Cache/Traits/RedisTrait.php index 681c3513ad307..ae07ad39a140d 100644 --- a/src/Symfony/Component/Cache/Traits/RedisTrait.php +++ b/src/Symfony/Component/Cache/Traits/RedisTrait.php @@ -16,6 +16,7 @@ use Predis\Connection\Aggregate\PredisCluster; use Predis\Connection\Aggregate\RedisCluster; use Predis\Response\Status; +use Symfony\Component\Cache\Exception\CacheException; use Symfony\Component\Cache\Exception\InvalidArgumentException; /** @@ -109,7 +110,7 @@ public static function createConnection($dsn, array $options = array()) } $params += $options + self::$defaultConnectionOptions; if (null === $params['class'] && !extension_loaded('redis') && !class_exists(\Predis\Client::class)) { - throw new \RuntimeException(sprintf('Cannot find the "redis" extension, and "predis/predis" is not installed: %s', $dsn)); + throw new CacheException(sprintf('Cannot find the "redis" extension, and "predis/predis" is not installed: %s', $dsn)); } $class = null === $params['class'] ? (extension_loaded('redis') ? \Redis::class : \Predis\Client::class) : $params['class'];