Come personalizzare settings.php durante il profilo di installazione


9

Sto creando un profilo di installazione per il mio progetto interno dell'azienda attuale.

Durante il processo di installazione, uno dei moduli personalizzati si arresta in modo anomalo durante il init()tentativo, poiché tenta di utilizzare una variabile globale definita su settings.php(che è l'attuale comportamento predefinito del modulo)

Usando system_form_install_settings_form_alter()ho modificato il modulo delle impostazioni, aggiungendo un campo di testo di input per l'input dell'utente e al momento dell'invio il valore viene aggiunto settings.php, ma settings.phpviene riscritto prima dell'inizio dell'installazione del profilo.

Esiste un modo per impedire la pulizia settings.phptramite il processo di installazione?


1
Forse sarebbe più facile patchare il modulo che si sta arrestando in modo anomalo e inviare la modifica alla coda dei problemi per quel progetto. Prima di accettare la modifica, è possibile aggiungere un riferimento alla patch nel makefile per il profilo di installazione.
greg_1_anderson,

Ciao, grazie per la tua risposta. È un modulo interno personalizzato (non un contrib), ma sì, l'ho corretto e il problema è stato risolto.
Paulo Gomes,

È qualcosa che può aiutare anche l'uso di un file settings.local.php che sovrascrive il file settings.php?
Bet,

Questo link è stato di grande aiuto per me previousnext.com.au/blog/…
Vic

Risposte:


3

Potrebbe essere più semplice utilizzare a settings.common.php

Spesso durante i progetti di gruppo, disponiamo settings.phpdi credenziali locali con db ecc. E settings.common.phpdi impostazioni comuni agli ambienti di installazione e distribuzione.

È possibile aggiungere settings.common.phpinserendo / includi una rigasettings.php

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

e quindi scrivici quando necessario durante l'installazione.


3

La mia risposta dipende dal server che utilizza Apache, ma suppongo che anche qualsiasi altro server Web possa farlo.

Nella tua configurazione di virtualhost, puoi impostare tutte le variabili per il tuo ambiente:

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

E nel tuo file settings.php:

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

Puoi impostare anche altre variabili in questo modo.

Se sei preoccupato che l'array $ _SERVER passi nelle mani sbagliate, puoi annullare tutte le variabili importanti nella parte inferiore di settings.php:

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

Ecco come lo facciamo nel mio ufficio per spostare i siti tra i nostri ambienti di sviluppo, la messa in scena e persino la produzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.