Commit 81690f84 authored by catch's avatar catch
Browse files

Issue #3251625 by alexpott, Berdir: Including settings.php a second time and...

Issue #3251625 by alexpott, Berdir: Including settings.php a second time and without same context can result in errors

(cherry picked from commit 773a2138)
parent 38a6e2c0
Loading
Loading
Loading
Loading
+5 −11
Original line number Diff line number Diff line
@@ -393,7 +393,7 @@ function system_requirements($phase) {
  // Verify there are no database entries in settings.php with table prefix in
  // array format.
  if ($phase === 'runtime' || $phase === 'update') {
    if (_system_check_array_table_prefixes(\Drupal::getContainer()->getParameter('app.root'), \Drupal::getContainer()->getParameter('site.path')) === TRUE) {
    if (_system_check_array_table_prefixes() === TRUE) {
      $requirements['database_table_prefixes'] = [
        'title' => t('Database table prefixes'),
        'value' => t("There is at least one database entry in the \$database array in settings.php that has a 'prefix' value in the format of an array. Per-table prefixes are no longer supported. Change your settings.php file to ensure the value of every 'prefix' entry is a single string."),
@@ -1540,16 +1540,10 @@ function _system_advisories_requirements(array &$requirements): void {
/**
 * Checks if there are 'prefix' entries in array format for tables.
 */
function _system_check_array_table_prefixes($app_root, $site_path) {
  if (is_readable($app_root . '/' . $site_path . '/settings.php')) {
    include $app_root . '/' . $site_path . '/settings.php';
  }
  if (empty($databases)) {
    return FALSE;
  }
  foreach ($databases as $database) {
    foreach ($database as $target) {
      if (isset($target['prefix']) && is_array($target['prefix'])) {
function _system_check_array_table_prefixes() {
  foreach (Database::getAllConnectionInfo() as $targets) {
    foreach ($targets as $target) {
      if (isset($target['extra_prefix']) && is_array($target['extra_prefix'])) {
        return TRUE;
      }
    }