Jak dostosować settings.php podczas profilu instalacyjnego

9

Tworzę profil instalacyjny dla mojego obecnego projektu wewnętrznego firmy.

Podczas procesu instalacji jeden z modułów niestandardowych ulega awarii init(), ponieważ próbuje użyć jednej zdefiniowanej zmiennej globalnej settings.php(jest to bieżące domyślne zachowanie modułu)

Za pomocą system_form_install_settings_form_alter()zmieniłem formularz ustawień, dodając jedno pole tekstowe do wprowadzenia przez użytkownika, a po przesłaniu wartość jest dołączana settings.php, ale settings.phpjest przepisywana przed rozpoczęciem instalacji profilu.

Czy jest jakiś sposób, aby zapobiec czyszczeniu settings.phpprzez proces instalacji?

Paulo Gomes
źródło
1
Może łatwiej byłoby załatać awarię modułu i przesłać zmiany do kolejki problemów dla tego projektu. Przed zaakceptowaniem zmiany możesz dodać odniesienie do poprawki w pliku makefile dla swojego profilu instalacyjnego.
greg_1_anderson
Cześć, dzięki za odpowiedź. Jest to niestandardowy moduł wewnętrzny (nie jeden), ale tak, załatałem go i rozwiązałem problem.
Paulo Gomes,
Czy jest coś, w czym pomocne może być użycie pliku settings.local.php, który zastępuje plik settings.php?
beth
Ten link był dla mnie ogromną pomocą previousnext.com.au/blog/…
Vic

Odpowiedzi:

3

Łatwiejsze może być użycie settings.common.php

Często podczas projektów zespołowych mamy lokalne settings.phppoświadczenia db itp. I settings.common.phpustawienia wspólne dla środowisk instalacyjnych i wdrożeniowych.

Możesz dodać settings.common.phpz włączeniem / wymaganiem liniisettings.php

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

a następnie napisz do niego w razie potrzeby podczas instalacji.

David Thomas
źródło
3

Moja odpowiedź zależy od serwera używającego Apache, ale zakładam, że każdy inny serwer sieciowy może to zrobić.

W konfiguracji virtualhost możesz ustawić wszystkie zmienne dla swojego środowiska:

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

A w pliku settings.php:

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

W ten sposób możesz również ustawić dowolne inne zmienne.

Jeśli martwisz się, że tablica $ _SERVER dostanie się w niepowołane ręce, możesz odłączyć wszystkie ważne zmienne na dole ustawień. Php:

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

W ten sposób robimy to w moim biurze, aby przenosić witryny między naszymi środowiskami programistycznymi, scenami, a nawet produkcją.

Scott Joudry
źródło