Comment personnaliser settings.php pendant le profil d'installation

9

Je crée un profil d'installation pour mon projet interne d'entreprise actuel.

Pendant le processus d'installation, l'un des modules personnalisés se bloque pendant init(), car il essaie d'utiliser une variable globale définie sur settings.php(c'est le comportement par défaut actuel du module)

En utilisant system_form_install_settings_form_alter()j'ai changé le formulaire de paramètres, en ajoutant un champ de texte d'entrée pour l'entrée de l'utilisateur, et lors de la soumission, la valeur est ajoutée à settings.php, mais settings.phpest réécrite avant le début de l'installation du profil.

Est-il possible d'empêcher le nettoyage settings.phppar le processus d'installation?

Paulo Gomes
la source
1
Il serait peut-être plus facile de corriger le module qui plante et de soumettre votre modification à la file d'attente des problèmes pour ce projet. Avant d'accepter votre modification, vous pouvez ajouter une référence à votre correctif dans le makefile de votre profil d'installation.
greg_1_anderson
Salut, merci pour votre réponse. C'est un module interne personnalisé (pas un contrib), mais oui, je l'ai corrigé et le problème a été résolu.
Paulo Gomes du
Est-ce quelque chose où l'utilisation d'un fichier settings.local.php qui remplace le fichier settings.php pourrait également aider?
beth
Ce lien m'a été d'une grande aide previousnext.com.au/blog/…
Vic

Réponses:

3

Vous trouverez peut-être plus facile d’utiliser un settings.common.php

Souvent pendant les projets d'équipe, nous avons local settings.phpavec des informations d'identification de base de données, etc. et un settings.common.phpavec des paramètres communs aux environnements d'installation et de déploiement.

Vous pouvez ajouter settings.common.phpune ligne include / require danssettings.php

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

puis écrivez-y si nécessaire pendant l'installation.

David Thomas
la source
3

Ma réponse dépend du serveur utilisant Apache, mais je suppose que n'importe lequel des autres serveurs Web peut également le faire.

Dans votre configuration virtualhost, vous pouvez définir toutes les variables de votre environnement:

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

Et dans votre fichier settings.php:

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

Vous pouvez également définir toutes les autres variables de cette façon.

Si vous craignez que le tableau $ _SERVER ne tombe entre de mauvaises mains, vous pouvez désactiver toutes les variables importantes au bas de settings.php:

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

C'est ainsi que nous procédons à mon bureau pour déplacer des sites entre nos environnements de développement, la mise en scène et même la production.

Scott Joudry
la source