diff --git a/lib/SimpleSAML/SessionHandlerPHP.php b/lib/SimpleSAML/SessionHandlerPHP.php
index 280584f70210f32fb873c3aa58b57c3ccff145de..f2ccb8ded9bb3b0d5da3d474c1c49394a0c7f16e 100644
--- a/lib/SimpleSAML/SessionHandlerPHP.php
+++ b/lib/SimpleSAML/SessionHandlerPHP.php
@@ -67,10 +67,11 @@ class SessionHandlerPHP extends SessionHandler
             session_write_close();
         }
 
-        if (!empty($this->cookie_name)) {
-            session_name($this->cookie_name);
-        } else {
+
+        if (empty($this->cookie_name)) {
             $this->cookie_name = session_name();
+        } elseif (!headers_sent() || version_compare(PHP_VERSION, '7.2', '<')) {
+            session_name($this->cookie_name);
         }
 
         $params = $this->getCookieParams();