diff --git a/core/core.services.yml b/core/core.services.yml
index a6663b4..1e1bfcd 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -42,7 +42,7 @@ services:
     arguments: ['@database']
   cache.backend.apcu:
     class: Drupal\Core\Cache\ApcuBackendFactory
-    arguments: ['@app.root']
+    arguments: ['@app.root', '@kernel']
   cache.backend.php:
     class: Drupal\Core\Cache\PhpBackendFactory
   cache.bootstrap:
diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 968192e..81b41c1 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -334,7 +334,7 @@ function install_begin_request(&$install_state) {
 
   // Determine whether base system services are ready to operate.
   $install_state['config_verified'] = install_ensure_config_directory(CONFIG_ACTIVE_DIRECTORY) && install_ensure_config_directory(CONFIG_STAGING_DIRECTORY);
-  $install_state['database_verified'] = install_verify_database_settings();
+  $install_state['database_verified'] = install_verify_database_settings($site_path);
   $install_state['settings_verified'] = $install_state['config_verified'] && $install_state['database_verified'];
 
   if ($install_state['settings_verified']) {
@@ -1017,11 +1017,17 @@ function install_verify_completed_task() {
 
 /**
  * Verifies that settings.php specifies a valid database connection.
+ *
+ * @param string $site_path
+ *   The site path.
+ *
+ * @return bool
+ *   TRUE if there are no database errors.
  */
-function install_verify_database_settings() {
+function install_verify_database_settings($site_path) {
   if ($database = Database::getConnectionInfo()) {
     $database = $database['default'];
-    $settings_file = './' . conf_path(FALSE) . '/settings.php';
+    $settings_file = './' . $site_path . '/settings.php';
     $errors = install_database_errors($database, $settings_file);
     if (empty($errors)) {
       return TRUE;
@@ -1821,8 +1827,9 @@ function install_check_translations($langcode, $server_pattern) {
   $readable = FALSE;
   $writable = FALSE;
   // @todo: Make this configurable.
-  $files_directory = conf_path() . '/files';
-  $translations_directory = conf_path() . '/files/translations';
+  $conf_path = \Drupal::service('kernel')->getSitePath();
+  $files_directory =  $conf_path . '/files';
+  $translations_directory = $conf_path . '/files/translations';
   $translations_directory_exists = FALSE;
   $translation_available = FALSE;
   $online = FALSE;
@@ -2000,7 +2007,7 @@ function install_check_requirements($install_state) {
   foreach ($default_files as $default_file_info) {
     $readable = FALSE;
     $writable = FALSE;
-    $conf_path = './' . conf_path(FALSE);
+    $conf_path = './' . \Drupal::service('kernel')->getSitePath();
     $file = $conf_path . "/{$default_file_info['file']}";
     $default_file = "./sites/default/{$default_file_info['file_default']}";
     $exists = FALSE;
diff --git a/core/includes/install.inc b/core/includes/install.inc
index 1038818..eb215a3 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -197,7 +197,7 @@ function drupal_get_database_types() {
  */
 function drupal_rewrite_settings($settings = array(), $settings_file = NULL) {
   if (!isset($settings_file)) {
-    $settings_file = conf_path(FALSE) . '/settings.php';
+    $settings_file = \Drupal::service('kernel')->getSitePath() . '/settings.php';
   }
   // Build list of setting names and insert the values into the global namespace.
   $variable_names = array();
@@ -470,11 +470,11 @@ function drupal_install_config_directories() {
     $config_directories_hash = Crypt::randomBytesBase64(55);
     $settings['config_directories'] = array(
       CONFIG_ACTIVE_DIRECTORY => (object) array(
-        'value' => conf_path() . '/files/config_' . $config_directories_hash . '/active',
+        'value' => \Drupal::service('kernel')->getSitePath() . '/files/config_' . $config_directories_hash . '/active',
         'required' => TRUE,
       ),
       CONFIG_STAGING_DIRECTORY => (object) array(
-        'value' => conf_path() . '/files/config_' . $config_directories_hash . '/staging',
+        'value' => \Drupal::service('kernel')->getSitePath() . '/files/config_' . $config_directories_hash . '/staging',
         'required' => TRUE,
       ),
     );
diff --git a/core/includes/update.inc b/core/includes/update.inc
index 510dc8c..0b47d0e 100644
--- a/core/includes/update.inc
+++ b/core/includes/update.inc
@@ -73,7 +73,7 @@ function update_settings_file_requirements() {
   $requirements = array();
 
   // Check whether settings.php needs to be rewritten.
-  $settings_file = conf_path() . '/settings.php';
+  $settings_file = \Drupal::service('kernel')->getSitePath() . '/settings.php';
   $writable = drupal_verify_install_file($settings_file, FILE_EXIST | FILE_READABLE | FILE_WRITABLE);
   $requirements['settings file']['title'] = 'Settings file';
   if ($writable) {
diff --git a/core/lib/Drupal/Core/Cache/ApcuBackendFactory.php b/core/lib/Drupal/Core/Cache/ApcuBackendFactory.php
index ffe5993..f10e1f3 100644
--- a/core/lib/Drupal/Core/Cache/ApcuBackendFactory.php
+++ b/core/lib/Drupal/Core/Cache/ApcuBackendFactory.php
@@ -8,6 +8,7 @@
 namespace Drupal\Core\Cache;
 
 use \Drupal\Component\Utility\Crypt;
+use \Drupal\Core\DrupalKernelInterface;
 
 class ApcuBackendFactory implements CacheFactoryInterface {
 
@@ -23,9 +24,12 @@ class ApcuBackendFactory implements CacheFactoryInterface {
    *
    * @param string $root
    *   The app root.
+   *
+   * @param \Drupal\Core\DrupalKernelInterface $kernel
+   *   The Drupal kernel.
    */
-  public function __construct($root) {
-    $this->sitePrefix = Crypt::hashBase64($root . '/' . conf_path());
+  public function __construct($root, DrupalKernelInterface $kernel) {
+    $this->sitePrefix = Crypt::hashBase64($root . '/' . $kernel->getSitePath());
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php b/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php
index 1674211..5894527 100644
--- a/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php
+++ b/core/lib/Drupal/Core/Installer/Form/SiteConfigureForm.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Installer\Form;
 
+use Drupal\Core\DrupalKernelInterface;
 use Drupal\Core\Extension\ModuleInstallerInterface;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
@@ -21,6 +22,13 @@
 class SiteConfigureForm extends FormBase {
 
   /**
+   * The Drupal kernel.
+   *
+   * @var \Drupal\Core\DrupalKernelInterface
+   */
+  protected $kernel;
+
+  /**
    * The user storage.
    *
    * @var \Drupal\user\UserStorageInterface
@@ -60,6 +68,8 @@ class SiteConfigureForm extends FormBase {
    *
    * @param string $root
    *   The app root.
+   * @param \Drupal\Core\DrupalKernelInterface $kernel
+   *   The Drupal kernel.
    * @param \Drupal\user\UserStorageInterface $user_storage
    *   The user storage.
    * @param \Drupal\Core\State\StateInterface $state
@@ -69,8 +79,9 @@ class SiteConfigureForm extends FormBase {
    * @param \Drupal\Core\Locale\CountryManagerInterface $country_manager
    *   The country manager.
    */
-  public function __construct($root, UserStorageInterface $user_storage, StateInterface $state, ModuleInstallerInterface $module_installer, CountryManagerInterface $country_manager) {
+  public function __construct($root, DrupalKernelInterface $kernel, UserStorageInterface $user_storage, StateInterface $state, ModuleInstallerInterface $module_installer, CountryManagerInterface $country_manager) {
     $this->root = $root;
+    $this->kernel = $kernel;
     $this->userStorage = $user_storage;
     $this->state = $state;
     $this->moduleInstaller = $module_installer;
@@ -83,6 +94,7 @@ public function __construct($root, UserStorageInterface $user_storage, StateInte
   public static function create(ContainerInterface $container) {
     return new static(
       $container->get('app.root'),
+      $container->get('kernel'),
       $container->get('entity.manager')->getStorage('user'),
       $container->get('state'),
       $container->get('module_installer'),
@@ -104,7 +116,7 @@ public function buildForm(array $form, FormStateInterface $form_state) {
     $form['#title'] = $this->t('Configure site');
 
     // Warn about settings.php permissions risk
-    $settings_dir = conf_path();
+    $settings_dir = $this->kernel->getSitePath();
     $settings_file = $settings_dir . '/settings.php';
     // Check that $_POST is empty so we only show this message when the form is
     // first displayed, not on the next page after it is submitted. (We do not
