public function NativeSessionStorage::start

Starts the session.

@api

Return value

boolean True if started.

Throws

\RuntimeException If something goes wrong starting the session.

Overrides SessionStorageInterface::start

1 call to NativeSessionStorage::start()
NativeSessionStorage::getBag in drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php
Gets a SessionBagInterface by name.
1 method overrides NativeSessionStorage::start()
PhpBridgeSessionStorage::start in drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/PhpBridgeSessionStorage.php
Starts the session.

File

drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php, line 128

Class

NativeSessionStorage
This provides a base class for session attribute storage.

Namespace

Symfony\Component\HttpFoundation\Session\Storage

Code

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;
}