diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 222ac0caf57bfd23e48544a93825120bc661fc77..c0473d149f63375dc46cd636afefe29700be8b47 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -347,75 +347,6 @@ function config_get_config_directory($type = CONFIG_ACTIVE_DIRECTORY) { throw new Exception(format_string('The configuration directory type %type does not exist.', array('%type' => $type))); } -/** - * Sets appropriate server variables needed for command line scripts to work. - * - * This function can be called by command line scripts before bootstrapping - * Drupal, to ensure that the page loads with the desired server parameters. - * This is because many parts of Drupal assume that they are running in a web - * browser and therefore use information from the global PHP $_SERVER variable - * that does not get set when Drupal is run from the command line. - * - * In many cases, the default way in which this function populates the $_SERVER - * variable is sufficient, and it can therefore be called without passing in - * any input. However, command line scripts running on a multisite installation - * (or on any installation that has settings.php stored somewhere other than - * the sites/default folder) need to pass in the URL of the site to allow - * Drupal to detect the correct location of the settings.php file. Passing in - * the 'url' parameter is also required for functions like request_uri() to - * return the expected values. - * - * Most other parameters do not need to be passed in, but may be necessary in - * some cases; for example, if \Drupal::request()->getClientIP() - * needs to return anything but the standard localhost value ('127.0.0.1'), - * the command line script should pass in the desired value via the - * 'REMOTE_ADDR' key. - * - * @param $variables - * (optional) An associative array of variables within - * \Drupal::request()->server that should be replaced. If the special element - * 'url' is provided in this array, it will be used to populate some of the - * server defaults; it should be set to the URL of the current page request, - * excluding any GET request but including the script name - * (e.g., http://www.example.com/mysite/index.php). - * - * @see conf_path() - * @see request_uri() - * @see \Symfony\Component\HttpFoundation\Request::getClientIP() - */ -function drupal_override_server_variables($variables = array()) { - $request = \Drupal::request(); - $server_vars = $request->server->all(); - // Allow the provided URL to override any existing values in $_SERVER. - if (isset($variables['url'])) { - $url = parse_url($variables['url']); - if (isset($url['host'])) { - $server_vars['HTTP_HOST'] = $url['host']; - } - if (isset($url['path'])) { - $server_vars['SCRIPT_NAME'] = $url['path']; - } - unset($variables['url']); - } - // Define default values for $_SERVER keys. These will be used if $_SERVER - // does not already define them and no other values are passed in to this - // function. - $defaults = array( - 'HTTP_HOST' => 'localhost', - 'SCRIPT_NAME' => NULL, - 'REMOTE_ADDR' => '127.0.0.1', - 'REQUEST_METHOD' => 'GET', - 'SERVER_NAME' => NULL, - 'SERVER_SOFTWARE' => NULL, - 'HTTP_USER_AGENT' => NULL, - ); - // Replace elements of the $_SERVER array, as appropriate. - $request->server->replace($variables + $server_vars + $defaults); - - // @todo remove once conf_path() no longer uses $_SERVER. - $_SERVER = $request->server->all(); -} - /** * Initializes the PHP environment. */ diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 56b9965d22bce1d1d31a62b8e3df061b13a37bad..890b5a99b00360ce3dd88438175ac10af784acaf 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -205,10 +205,6 @@ function install_state_defaults() { 'profile_info' => array(), // An array of available installation profiles. 'profiles' => array(), - // An array of server variables that will be substituted into the global - // $_SERVER array via drupal_override_server_variables(). Used by - // non-interactive installations only. - 'server' => array(), // The server URL where the interface translation files can be downloaded. // Tokens in the pattern will be replaced by appropriate values for the // required translation file. diff --git a/core/modules/system/lib/Drupal/system/Tests/Bootstrap/OverrideServerVariablesUnitTest.php b/core/modules/system/lib/Drupal/system/Tests/Bootstrap/OverrideServerVariablesUnitTest.php deleted file mode 100644 index b2fb336982c56ba100a785bb57f2554e14cf32c0..0000000000000000000000000000000000000000 --- a/core/modules/system/lib/Drupal/system/Tests/Bootstrap/OverrideServerVariablesUnitTest.php +++ /dev/null @@ -1,62 +0,0 @@ -<?php - -/** - * @file - * Definition of Drupal\system\Tests\Bootstrap\OverrideServerVariablesUnitTest. - */ - -namespace Drupal\system\Tests\Bootstrap; - -use Drupal\simpletest\UnitTestBase; -use Symfony\Component\HttpFoundation\Request; - -/** - * Tests for overriding server variables via the API. - */ -class OverrideServerVariablesUnitTest extends UnitTestBase { - - /** - * {@inheritdoc} - */ - public static function getInfo() { - return array( - 'name' => 'Overriding server variables', - 'description' => 'Test that drupal_override_server_variables() works correctly.', - 'group' => 'Bootstrap', - ); - } - - /** - * Tests providing a direct URL to to drupal_override_server_variables(). - */ - function testDrupalOverrideServerVariablesProvidedURL() { - $tests = array( - 'http://example.com' => array( - 'HTTP_HOST' => 'example.com', - 'SCRIPT_NAME' => isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] : NULL, - ), - 'http://example.com/index.php' => array( - 'HTTP_HOST' => 'example.com', - 'SCRIPT_NAME' => '/index.php', - ), - 'http://example.com/subdirectory/index.php' => array( - 'HTTP_HOST' => 'example.com', - 'SCRIPT_NAME' => '/subdirectory/index.php', - ), - ); - foreach ($tests as $url => $expected_server_values) { - $container = \Drupal::getContainer(); - $request = Request::createFromGlobals(); - $container->set('request', $request); - \Drupal::setContainer($container); - - // Call drupal_override_server_variables() and ensure that all expected - // $_SERVER variables were modified correctly. - drupal_override_server_variables(array('url' => $url)); - foreach ($expected_server_values as $key => $value) { - $this->assertIdentical(\Drupal::request()->server->get($key), $value); - $this->assertIdentical($_SERVER[$key], $value); - } - } - } -}