/**
  * {@inheritdoc}
  */
 public function start()
 {
     if ($this->started && !$this->closed) {
         return true;
     }
     if (version_compare(phpversion(), '5.4.0', '>=') && \PHP_SESSION_ACTIVE === session_status()) {
         throw new \RuntimeException('Failed to start the session: already started by PHP.');
     }
     if (version_compare(phpversion(), '5.4.0', '<') && isset($_SESSION) && session_id()) {
         // not 100% fool-proof, but is the most reliable way to determine if a session is active in PHP 5.3
         throw new \RuntimeException('Failed to start the session: already started by PHP ($_SESSION is set).');
     }
     if (ini_get('session.use_cookies') && headers_sent($file, $line)) {
         throw new \RuntimeException(sprintf('Failed to start the session because headers have already been sent by "%s" at line %d.', $file, $line));
     }
     // ok to try and start the session
     if (!session_start()) {
         throw new \RuntimeException('Failed to start the session');
     }
     $this->loadSession();
     if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) {
         // This condition matches only PHP 5.3 with internal save handlers
         $this->saveHandler->setActive(true);
     }
     return true;
 }
示例#2
0
 /**
  * {@inheritdoc}
  */
 public function save()
 {
     session_write_close();
     if (!$this->saveHandler->isWrapper() && !$this->getSaveHandler()->isSessionHandlerInterface()) {
         $this->saveHandler->setActive(false);
     }
     $this->closed = true;
 }
 /**
  * {@inheritdoc}
  */
 public function save()
 {
     session_write_close();
     if (!$this->saveHandler->isWrapper() && !$this->saveHandler->isSessionHandlerInterface()) {
         // This condition matches only PHP 5.3 with internal save handlers
         $this->saveHandler->setActive(false);
     }
     $this->closed = true;
 }
示例#4
0
 public function testIsWrapper()
 {
     $this->assertFalse($this->proxy->isWrapper());
 }