Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/DrupalKernel.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | c2387f117808 |
children | af1871eacc83 |
line wrap: on
line diff
--- a/core/lib/Drupal/Core/DrupalKernel.php Tue Jul 10 15:07:59 2018 +0100 +++ b/core/lib/Drupal/Core/DrupalKernel.php Thu Feb 28 13:21:36 2019 +0000 @@ -5,7 +5,6 @@ use Composer\Autoload\ClassLoader; use Drupal\Component\Assertion\Handle; use Drupal\Component\FileCache\FileCacheFactory; -use Drupal\Component\Utility\Unicode; use Drupal\Component\Utility\UrlHelper; use Drupal\Core\Cache\DatabaseBackend; use Drupal\Core\Config\BootstrapConfigStorageFactory; @@ -20,6 +19,7 @@ use Drupal\Core\Http\TrustedHostsRequestFactory; use Drupal\Core\Installer\InstallerRedirectTrait; use Drupal\Core\Language\Language; +use Drupal\Core\Security\PharExtensionInterceptor; use Drupal\Core\Security\RequestSanitizer; use Drupal\Core\Site\Settings; use Drupal\Core\Test\TestDatabase; @@ -36,6 +36,9 @@ use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Symfony\Component\HttpKernel\TerminableInterface; use Symfony\Component\Routing\Route; +use TYPO3\PharStreamWrapper\Manager as PharStreamWrapperManager; +use TYPO3\PharStreamWrapper\Behavior as PharStreamWrapperBehavior; +use TYPO3\PharStreamWrapper\PharStreamWrapper; /** * The DrupalKernel class is the core of Drupal itself. @@ -299,12 +302,16 @@ } /** - * Determine the application root directory based on assumptions. + * Determine the application root directory based on this file's location. * * @return string * The application root. */ protected static function guessApplicationRoot() { + // Determine the application root by: + // - Removing the namespace directories from the path. + // - Getting the path to the directory two levels up from the path + // determined in the previous step. return dirname(dirname(substr(__DIR__, 0, -strlen(__NAMESPACE__)))); } @@ -468,6 +475,26 @@ // Initialize the container. $this->initializeContainer(); + if (in_array('phar', stream_get_wrappers(), TRUE)) { + // Set up a stream wrapper to handle insecurities due to PHP's builtin + // phar stream wrapper. This is not registered as a regular stream wrapper + // to prevent \Drupal\Core\File\FileSystem::validScheme() treating "phar" + // as a valid scheme. + try { + $behavior = new PharStreamWrapperBehavior(); + PharStreamWrapperManager::initialize( + $behavior->withAssertion(new PharExtensionInterceptor()) + ); + } + catch (\LogicException $e) { + // Continue if the PharStreamWrapperManager is already initialized. For + // example, this occurs during a module install. + // @see \Drupal\Core\Extension\ModuleInstaller::install() + }; + stream_wrapper_unregister('phar'); + stream_wrapper_register('phar', PharStreamWrapper::class); + } + $this->booted = TRUE; return $this; @@ -1000,8 +1027,9 @@ // numbers handling. setlocale(LC_ALL, 'C'); - // Detect string handling method. - Unicode::check(); + // Set appropriate configuration for multi-byte strings. + mb_internal_encoding('utf-8'); + mb_language('uni'); // Indicate that code is operating in a test child site. if (!defined('DRUPAL_TEST_IN_CHILD_SITE')) { @@ -1091,7 +1119,7 @@ // misses. $old_loader = $this->classLoader; $this->classLoader = $loader; - // Our class loaders are preprended to ensure they come first like the + // Our class loaders are prepended to ensure they come first like the // class loader they are replacing. $old_loader->register(TRUE); $loader->register(TRUE); @@ -1604,13 +1632,14 @@ */ protected function getInstallProfile() { $config = $this->getConfigStorage()->read('core.extension'); - if (!empty($config['profile'])) { + if (isset($config['profile'])) { $install_profile = $config['profile']; } // @todo https://www.drupal.org/node/2831065 remove the BC layer. else { // If system_update_8300() has not yet run fallback to using settings. - $install_profile = Settings::get('install_profile'); + $settings = Settings::getAll(); + $install_profile = isset($settings['install_profile']) ? $settings['install_profile'] : NULL; } // Normalize an empty string to a NULL value.