Як налаштувати settings.php під час встановлення профілю


9

Я створюю інсталяційний профіль для мого поточного внутрішнього проекту компанії.

Під час процесу встановлення один з користувацьких модулів виходить з ладу під час init(), оскільки він намагається використовувати одну глобальну змінну, визначену на settings.php(це поточне поведінка модуля за замовчуванням)

Використовуючи system_form_install_settings_form_alter()я змінив форму налаштувань, додавши одне вхідне текстове поле для введення користувачем, і при поданні значення додається settings.php, але settings.phpпереписується перед початком установки профілю.

Чи є спосіб запобігти очищенню settings.phpшляхом встановлення?


1
Можливо, було б простіше виправити модуль, який виходить з ладу, і подати свої зміни до черги проблем для цього проекту. Перш ніж ваша зміна буде прийнята, ви можете додати посилання на свій патч у makefile для вашого інсталяційного профілю.
greg_1_anderson

Привіт, дякую за вашу відповідь. Це спеціальний внутрішній модуль (не внесок), але так, я його виправили і вирішили проблему.
Пауло Гомес

Це щось, де використання файлу settings.local.php, який перекриває файл settings.php, також може допомогти?
beth

Це посилання було для мене великою підмогою попереднєxt.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 потрапить в чужі руки, ви можете зняти всі важливі змінні в нижній частині налаштування.php:

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

Ось як ми це робимо в моєму офісі, щоб переміщувати сайти між нашими розробниками, постановками та навіть виробництвом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.