So passen Sie settings.php während des Installationsprofils an

9

Ich erstelle ein Installationsprofil für mein aktuelles unternehmensinternes Projekt.

Während des Installationsvorgangs stürzt eines der benutzerdefinierten Module ab init(), da versucht wird, eine globale Variable zu verwenden, die für definiert ist settings.php(dies ist das aktuelle Standardverhalten des Moduls).

Mit system_form_install_settings_form_alter()Ich habe das Einstellungsformular geändert, indem ich ein Eingabetextfeld für die Benutzereingabe hinzugefügt habe. Beim Senden wird der Wert angehängt settings.php, aber settings.phpvor Beginn der Profilinstallation neu geschrieben.

Gibt es eine Möglichkeit, die Bereinigung settings.phpdurch den Installationsprozess zu verhindern ?

Paulo Gomes
quelle
1
Möglicherweise ist es einfacher, das abstürzende Modul zu patchen und Ihre Änderung an die Problemwarteschlange für dieses Projekt zu senden. Bevor Ihre Änderung akzeptiert wird, können Sie im Makefile für Ihr Installationsprofil einen Verweis auf Ihren Patch hinzufügen.
greg_1_anderson
Hallo, danke für deine Antwort. Es ist ein benutzerdefiniertes internes Modul (kein beitragendes), aber ja, ich habe es gepatcht und das Problem gelöst.
Paulo Gomes
Ist es etwas, wo die Verwendung einer Datei settings.local.php, die die Datei settings.php überschreibt, ebenfalls hilfreich sein könnte?
Beth
Dieser Link war eine große Hilfe für mich previousnext.com.au/blog/…
Vic

Antworten:

3

Möglicherweise ist es einfacher, a zu verwenden settings.common.php

Während Teamprojekten haben wir häufig lokale settings.phpAnmeldeinformationen mit Datenbankanmeldeinformationen usw. und settings.common.phpEinstellungen, die für die Installations- und Bereitstellungsumgebungen gelten.

Sie können settings.common.phpmit einer Include / Require-Zeile hinzufügensettings.php

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

und schreiben Sie dann nach Bedarf während der Installation darauf.

David Thomas
quelle
3

Meine Antwort hängt vom Server ab, der Apache verwendet, aber ich gehe davon aus, dass auch jeder andere Webserver dies erreichen kann.

In Ihrer virtualhost-Konfiguration können Sie alle Variablen für Ihre Umgebung festlegen:

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

Und in Ihrer settings.php-Datei:

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

Auf diese Weise können Sie auch andere Variablen festlegen.

Wenn Sie befürchten, dass das Array $ _SERVER in die falschen Hände gerät, können Sie alle wichtigen Variablen unten in settings.php deaktivieren:

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

So machen wir es in meinem Büro, um Standorte zwischen unseren Entwicklungsumgebungen, der Bereitstellung und sogar der Produktion zu verschieben.

Scott Joudry
quelle