DrupalKernel::bootEnvironment

public static DrupalKernel::bootEnvironment($app_root = NULL)

Setup a consistent PHP environment.

This method sets PHP environment options we want to be sure are set correctly for security or just saneness.

Parameters

string $app_root: (optional) The path to the application root as a string. If not supplied, the application root will be computed.

File

core/lib/Drupal/Core/DrupalKernel.php, line 927

Class

DrupalKernel
The DrupalKernel class is the core of Drupal itself.

Namespace

Drupal\Core

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
public static function bootEnvironment($app_root = NULL) {
  if (static::$isEnvironmentInitialized) {
    return;
  }
 
  // Determine the application root if it's not supplied.
  if ($app_root === NULL) {
    $app_root = static::guessApplicationRoot();
  }
 
  // Include our bootstrap file.
  require_once $app_root . '/core/includes/bootstrap.inc';
 
  // Enforce E_STRICT, but allow users to set levels not part of E_STRICT.
  error_reporting(E_STRICT | E_ALL);
 
  // Override PHP settings required for Drupal to work properly.
  // sites/default/default.settings.php contains more runtime settings.
  // The .htaccess file contains settings that cannot be changed at runtime.
 
  // Use session cookies, not transparent sessions that puts the session id in
  // the query string.
  ini_set('session.use_cookies', '1');
  ini_set('session.use_only_cookies', '1');
  ini_set('session.use_trans_sid', '0');
  // Don't send HTTP headers using PHP's session handler.
  // Send an empty string to disable the cache limiter.
  ini_set('session.cache_limiter', '');
  // Use httponly session cookies.
  ini_set('session.cookie_httponly', '1');
 
  // Set sane locale settings, to ensure consistent string, dates, times and
  // numbers handling.
  setlocale(LC_ALL, 'C');
 
  // Detect string handling method.
  Unicode::check();
 
  // Indicate that code is operating in a test child site.
  if (!defined('DRUPAL_TEST_IN_CHILD_SITE')) {
    if ($test_prefix = drupal_valid_test_ua()) {
      $test_db = new TestDatabase($test_prefix);
      // Only code that interfaces directly with tests should rely on this
      // constant; e.g., the error/exception handler conditionally adds further
      // error information into HTTP response headers that are consumed by
      // Simpletest's internal browser.
      define('DRUPAL_TEST_IN_CHILD_SITE', TRUE);
 
      // Web tests are to be conducted with runtime assertions active.
      assert_options(ASSERT_ACTIVE, TRUE);
      // Now synchronize PHP 5 and 7's handling of assertions as much as
      // possible.
      Handle::register();
 
      // Log fatal errors to the test site directory.
      ini_set('log_errors', 1);
      ini_set('error_log', $app_root . '/' . $test_db->getTestSitePath() . '/error.log');
 
      // Ensure that a rewritten settings.php is used if opcache is on.
      ini_set('opcache.validate_timestamps', 'on');
      ini_set('opcache.revalidate_freq', 0);
    }
    else {
      // Ensure that no other code defines this.
      define('DRUPAL_TEST_IN_CHILD_SITE', FALSE);
    }
  }
 
  // Set the Drupal custom error handler.
  set_error_handler('_drupal_error_handler');
  set_exception_handler('_drupal_exception_handler');
 
  static::$isEnvironmentInitialized = TRUE;
}
doc_Drupal
2025-01-10 15:47:30
Comments
Leave a Comment

Please login to continue.