Skip to content

Commit 09818e9

Browse files
[Cache] fix checking for igbinary availability
1 parent f2cf444 commit 09818e9

File tree

3 files changed

+9
-9
lines changed

3 files changed

+9
-9
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ before_install:
172172
173173
tfold ext.apcu tpecl apcu-5.1.17 apcu.so $INI
174174
tfold ext.mongodb tpecl mongodb-1.6.0alpha1 mongodb.so $INI
175-
tfold ext.igbinary tpecl igbinary-2.0.8 igbinary.so $INI
175+
tfold ext.igbinary tpecl igbinary-3.1.2 igbinary.so $INI
176176
tfold ext.zookeeper tpecl zookeeper-0.7.1 zookeeper.so $INI
177177
tfold ext.amqp tpecl amqp-1.9.4 amqp.so $INI
178178
tfold ext.redis tpecl redis-4.3.0 redis.so $INI "no"

src/Symfony/Component/Cache/Marshaller/DefaultMarshaller.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ class DefaultMarshaller implements MarshallerInterface
2525
public function __construct(bool $useIgbinarySerialize = null)
2626
{
2727
if (null === $useIgbinarySerialize) {
28-
$useIgbinarySerialize = \extension_loaded('igbinary') && \PHP_VERSION_ID < 70400;
29-
} elseif ($useIgbinarySerialize && (!\extension_loaded('igbinary') || \PHP_VERSION_ID >= 70400)) {
30-
throw new CacheException('The "igbinary" PHP extension is not '.(\PHP_VERSION_ID >= 70400 ? 'compatible with PHP 7.4.' : 'loaded.'));
28+
$useIgbinarySerialize = \extension_loaded('igbinary') && (\PHP_VERSION_ID < 70400 || version_compare('3.1.0', phpversion('igbinary'), '<='));
29+
} elseif ($useIgbinarySerialize && (!\extension_loaded('igbinary') || (\PHP_VERSION_ID >= 70400 && version_compare('3.1.0', phpversion('igbinary'), '>')))) {
30+
throw new CacheException(\extension_loaded('igbinary') && \PHP_VERSION_ID >= 70400 ? 'Please upgrade the "igbinary" PHP extension to v3.1 or higher.' : 'The "igbinary" PHP extension is not loaded.');
3131
}
3232
$this->useIgbinarySerialize = $useIgbinarySerialize;
3333
}
@@ -66,7 +66,7 @@ public function unmarshall(string $value)
6666
return null;
6767
}
6868
static $igbinaryNull;
69-
if ($value === ($igbinaryNull ?? $igbinaryNull = \extension_loaded('igbinary') && \PHP_VERSION_ID < 70400 ? igbinary_serialize(null) : false)) {
69+
if ($value === ($igbinaryNull ?? $igbinaryNull = \extension_loaded('igbinary') && (\PHP_VERSION_ID < 70400 || version_compare('3.1.0', phpversion('igbinary'), '<=')) ? igbinary_serialize(null) : false)) {
7070
return null;
7171
}
7272
$unserializeCallbackHandler = ini_set('unserialize_callback_func', __CLASS__.'::handleUnserializeCallback');

src/Symfony/Component/Cache/Tests/Marshaller/DefaultMarshallerTest.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function testSerialize()
2424
'b' => function () {},
2525
];
2626

27-
$expected = ['a' => \extension_loaded('igbinary') && \PHP_VERSION_ID < 70400 ? igbinary_serialize(123) : serialize(123)];
27+
$expected = ['a' => \extension_loaded('igbinary') && (\PHP_VERSION_ID < 70400 || version_compare('3.1.0', phpversion('igbinary'), '<=')) ? igbinary_serialize(123) : serialize(123)];
2828
$this->assertSame($expected, $marshaller->marshall($values, $failed));
2929
$this->assertSame(['b'], $failed);
3030
}
@@ -43,7 +43,7 @@ public function testNativeUnserialize()
4343
*/
4444
public function testIgbinaryUnserialize()
4545
{
46-
if (\PHP_VERSION_ID >= 70400) {
46+
if (\PHP_VERSION_ID >= 70400 && version_compare('3.1.0', phpversion('igbinary'), '>')) {
4747
$this->markTestSkipped('igbinary is not compatible with PHP 7.4.');
4848
}
4949

@@ -67,7 +67,7 @@ public function testNativeUnserializeNotFoundClass()
6767
*/
6868
public function testIgbinaryUnserializeNotFoundClass()
6969
{
70-
if (\PHP_VERSION_ID >= 70400) {
70+
if (\PHP_VERSION_ID >= 70400 && version_compare('3.1.0', phpversion('igbinary'), '>')) {
7171
$this->markTestSkipped('igbinary is not compatible with PHP 7.4.');
7272
}
7373

@@ -95,7 +95,7 @@ public function testNativeUnserializeInvalid()
9595
*/
9696
public function testIgbinaryUnserializeInvalid()
9797
{
98-
if (\PHP_VERSION_ID >= 70400) {
98+
if (\PHP_VERSION_ID >= 70400 && version_compare('3.1.0', phpversion('igbinary'), '>')) {
9999
$this->markTestSkipped('igbinary is not compatible with PHP 7.4.');
100100
}
101101

0 commit comments

Comments
 (0)