Bagaimana cara menyesuaikan pengaturan.php selama profil instalasi

9

Saya membuat profil instalasi untuk proyek internal perusahaan saya saat ini.

Selama proses instalasi, salah satu modul khusus macet selama init(), karena mencoba menggunakan satu variabel global yang didefinisikan settings.php(itulah perilaku default modul saat ini)

Dengan menggunakan system_form_install_settings_form_alter()saya mengubah formulir pengaturan, dengan menambahkan satu input bidang teks untuk input pengguna, dan pada saat mengirimkan nilai ditambahkan ke settings.php, tetapi settings.phpditulis ulang sebelum instalasi profil dimulai.

Apakah ada cara untuk mencegah pembersihan settings.phpoleh proses instalasi?

Paulo Gomes
sumber
1
Mungkin akan lebih mudah untuk menambal modul yang mogok, dan kirimkan perubahan Anda ke antrian masalah untuk proyek itu. Sebelum perubahan Anda diterima, Anda dapat menambahkan referensi ke tambalan Anda di makefile untuk profil instalasi Anda.
greg_1_anderson
Hai, terima kasih atas jawaban Anda. Ini adalah modul internal khusus (bukan kontrib), tapi ya, saya menambalnya dan masalah terpecahkan.
Paulo Gomes
Apakah ini sesuatu yang menggunakan file settings.local.php yang menimpa file settings.php juga bisa membantu?
beth
Tautan ini sangat membantu saya sebelumnyanext.com.au/blog/…
Vic

Jawaban:

3

Anda mungkin merasa lebih mudah menggunakan a settings.common.php

Seringkali selama proyek tim, kami memiliki lokal settings.php dengan kredensial db dll. Dan settings.common.phpdengan pengaturan yang umum untuk lingkungan pemasangan dan penyebaran.

Anda dapat menambahkan settings.common.phpdengan baris sertakan / minta masuksettings.php

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

dan kemudian menulis sesuai kebutuhan saat menginstal.

David Thomas
sumber
3

Jawaban saya tergantung pada server yang menggunakan Apache, tetapi saya berasumsi server web lain dapat melakukannya juga.

Di konfigurasi virtualhost Anda, Anda dapat mengatur semua variabel untuk lingkungan Anda:

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

Dan di file settings.php Anda:

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

Anda dapat mengatur variabel lain dengan cara ini juga.

Jika Anda khawatir tentang array $ _SERVER masuk ke tangan yang salah, Anda dapat menghapus semua variabel penting di bagian bawah settings.php:

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

Ini adalah bagaimana kami melakukannya di kantor saya untuk memindahkan situs antara lingkungan pengembang kami, pementasan dan bahkan produksi.

Scott Joudry
sumber