diff --git a/lib/SimpleSAML/SessionHandlerPHP.php b/lib/SimpleSAML/SessionHandlerPHP.php
index 5b6ef5619607559cbab935cdb9c4fc2d0a0719a2..17480b68cb119e0ab2ccd4a27edc303cbb0b125c 100644
--- a/lib/SimpleSAML/SessionHandlerPHP.php
+++ b/lib/SimpleSAML/SessionHandlerPHP.php
@@ -73,12 +73,12 @@ class SimpleSAML_SessionHandlerPHP extends SimpleSAML_SessionHandler {
 		$sessionId = SimpleSAML_Utilities::stringToHex(SimpleSAML_Utilities::generateRandomBytes(16));
 		SimpleSAML_Session::createSession($sessionId);
 
-		if (session_id($sessionId) !== '') {
+		if (session_id() !== '') {
 			/* Session already started, close it. */
 			session_write_close();
-			session_id($sessionId);
 		}
 
+		session_id($sessionId);
 		session_start();
 
 		return session_id();