Como personalizar o settings.php durante o perfil de instalação

9

Estou criando um perfil de instalação para o meu projeto interno da empresa atual.

Durante o processo de instalação, um dos módulos personalizados trava durante init(), pois tenta usar uma variável global definida settings.php(esse é o comportamento padrão atual do módulo)

Usando system_form_install_settings_form_alter()eu alterei o formulário de configurações, adicionando um campo de texto de entrada para entrada do usuário e, ao enviar, o valor é anexado a settings.php, mas settings.phpé reescrito antes do início da instalação do perfil.

Existe alguma maneira de impedir a limpeza settings.phppelo processo de instalação?

Paulo Gomes
fonte
11
Talvez seja mais fácil corrigir o módulo que está travando e enviar sua alteração para a fila de problemas desse projeto. Antes de sua alteração ser aceita, você pode adicionar uma referência ao seu patch no makefile do seu perfil de instalação.
greg_1_anderson 01/09/12
Oi, obrigado pela sua resposta. É um módulo interno personalizado (não um contrib), mas sim, eu o corrigi e o problema foi resolvido.
Paulo Gomes
É algo em que o uso de um arquivo settings.local.php que substitui o arquivo settings.php também pode ajudar?
beth 28/01
Este link foi de grande ajuda para mim previousnext.com.au/blog/…
Vic

Respostas:

3

Você pode achar mais fácil usar um settings.common.php

Freqüentemente, durante os projetos de equipe, temos settings.phpcredenciais locais de banco de dados, etc. e settings.common.phpconfigurações comuns aos ambientes de instalação e implantação.

Você pode adicionar settings.common.phpcom uma linha de inclusão / necessidadesettings.php

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

e escreva-o conforme necessário durante a instalação.

David Thomas
fonte
3

Minha resposta depende do servidor que está usando o Apache, mas presumo que qualquer outro servidor da Web também possa fazer isso.

Na sua configuração de host virtual, você pode definir todas as variáveis ​​para o seu ambiente:

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

E no seu arquivo settings.php:

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

Você também pode definir outras variáveis ​​dessa maneira.

Se você está preocupado com o fato de o array $ _SERVER entrar em mãos erradas, você pode desmarcar todas as variáveis ​​importantes na parte inferior de settings.php:

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

É assim que fazemos no meu escritório para mover sites entre nossos ambientes de desenvolvimento, preparação e até produção.

Scott Joudry
fonte