diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml
index ce7a3dd7eee7d..c8cc568b268f0 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml
@@ -15,6 +15,7 @@
+
diff --git a/src/Symfony/Bundle/FrameworkBundle/composer.json b/src/Symfony/Bundle/FrameworkBundle/composer.json
index c8ed98787e15e..00e17dde2cc55 100644
--- a/src/Symfony/Bundle/FrameworkBundle/composer.json
+++ b/src/Symfony/Bundle/FrameworkBundle/composer.json
@@ -23,7 +23,7 @@
"symfony/dependency-injection": "^3.4.3|^4.0.3",
"symfony/config": "~3.4|~4.0",
"symfony/event-dispatcher": "~3.4|~4.0",
- "symfony/http-foundation": "^3.3.11|~4.0",
+ "symfony/http-foundation": "^3.4.24|^4.2.5",
"symfony/http-kernel": "~3.4|~4.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/filesystem": "~2.8|~3.0|~4.0",
diff --git a/src/Symfony/Component/HttpFoundation/Session/Session.php b/src/Symfony/Component/HttpFoundation/Session/Session.php
index 867ceba97f8db..62ce948b6828b 100644
--- a/src/Symfony/Component/HttpFoundation/Session/Session.php
+++ b/src/Symfony/Component/HttpFoundation/Session/Session.php
@@ -193,7 +193,9 @@ public function migrate($destroy = false, $lifetime = null)
*/
public function save()
{
- $this->storage->save();
+ if ($this->isStarted()) {
+ $this->storage->save();
+ }
}
/**
diff --git a/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php b/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php
index afa00fc7c3046..f76813f1f1b02 100644
--- a/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php
+++ b/src/Symfony/Component/HttpFoundation/Tests/Session/SessionTest.php
@@ -16,6 +16,7 @@
use Symfony\Component\HttpFoundation\Session\Flash\FlashBag;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
+use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageInterface;
/**
* SessionTest.
@@ -260,4 +261,14 @@ public function testIsEmpty()
$flash->get('hello');
$this->assertTrue($this->session->isEmpty());
}
+
+ public function testSaveIfNotStarted()
+ {
+ $storage = $this->createMock(SessionStorageInterface::class);
+ $session = new Session($storage);
+
+ $storage->expects($this->once())->method('isStarted')->willReturn(false);
+ $storage->expects($this->never())->method('save');
+ $session->save();
+ }
}