Как настроить файл settings.php во время установки профиля

9

Я создаю установочный профиль для моего текущего внутреннего проекта компании.

В процессе установки происходит сбой одного из пользовательских модулей init(), поскольку он пытается использовать одну глобальную переменную, определенную для settings.php(это текущее поведение модуля по умолчанию)

Используя system_form_install_settings_form_alter()я изменил форму настроек, добавив одно входное текстовое поле для ввода пользователя и при отправке добавляем значение settings.php, но settings.phpперезаписываем перед началом установки профиля.

Есть ли способ предотвратить очистку от settings.phpпроцесса установки?

Пауло Гомес
источник
1
Может быть, было бы проще пропатчить модуль, который дает сбой, и отправить ваши изменения в очередь проблем для этого проекта. Перед тем, как ваше изменение будет принято, вы можете добавить ссылку на ваш патч в make-файл для вашего установочного профиля.
greg_1_anderson
Привет спасибо за ответ Это пользовательский внутренний модуль (не для Contribute), но да, я исправил его, и проблема решена.
Пауло Гомес
Это то, где использование файла settings.local.php, который переопределяет файл settings.php, также может помочь?
Бэт
Эта ссылка была для меня большой помощью previousnext.com.au/blog/…
Вик

Ответы:

3

Вам может быть проще использовать settings.common.php

Часто во время командных проектов у нас есть локальные settings.phpс учетными данными db и т. Д. И settings.common.phpс настройками, общими для сред установки и развертывания.

Вы можете добавить settings.common.phpстроку включения / запроса вsettings.php

require 'settings.common.php'; // same directory, e.g sites/default/settings.common.php

и затем напишите ему по мере необходимости во время установки.

Дэвид Томас
источник
3

Мой ответ зависит от сервера, использующего Apache, но я предполагаю, что любой из других веб-серверов может выполнить это тоже.

В вашей конфигурации virtualhost вы можете установить все переменные для вашей среды:

SetEnv DBUSER datbase_user
SetEnv DBPASS database_pass
SetEnv DBNAME database_name
SetEnv DBHOST localhost

И в вашем файле settings.php:

$databases = array (
   'default' => 
   array (
     'default' => 
     array (
       'database' => $_SERVER["DBNAME"],
       'username' => $_SERVER["DBUSER"],
       'password' => $_SERVER["DBPASS"],
       'host' => $_SERVER["DBHOST"],
       'port' => '',
       'driver' => 'mysql',
       'prefix' => '',
    ),
   ),
 );

Таким же образом вы можете установить и другие переменные.

Если вас беспокоит попадание массива $ _SERVER в чужие руки, вы можете сбросить все важные переменные в нижней части файла settings.php:

unset($_SERVER["DBUSER"]);
unset($_SERVER["DBPASS"]);
unset($_SERVER["DBNAME"]);
unset($_SERVER["DBHOST"]);

Вот как мы делаем это в моем офисе, чтобы перемещать сайты между нашими средами разработки, подготовкой и даже производством.

Скотт Джудри
источник