Pada dasarnya, salah satu pertanyaan terbesar sepanjang masa: Apa saja cara Anda menggunakan settings.php dalam alur kerja pengembangan / pementasan Anda?
Saat ini, saya mengatur file setting.php saya seperti berikut, dan saya mendasarkan pengembangan saya pada direktif $ HOST server — artinya saya dapat bekerja di dev.example.com untuk server pengembangan (dibagi), local.example. com untuk komputer lokal saya (dan checkout kode lokal dev lainnya), dan www.example.com (atau hanya example.com) untuk situs langsung.
(Kode ini ada di bagian 'Pengaturan basis data' pada settings.php):
$host = $_SERVER['HTTP_HOST'];
$base_url = 'http://'.$host;
$cookie_domain = $host;
switch($host) {
case 'example.com': # Production server
$db_url = 'mysqli://prod_sql_user:[email protected]/prod_db';
$update_free_access = FALSE;
$conf = array (
// Set production config options here...
'example_setting' => 0,
);
break;
case 'dev.example.com': # Development server
$db_url = 'mysqli://dev_sql_user:[email protected]/dev_db';
$update_free_access = FALSE;
$conf = array (
// Set production config options here...
'example_setting' => 0,
);
break;
case 'local.example.com': # Local server
$db_url = 'mysqli://local_sql_user:[email protected]/local_db';
$update_free_access = FALSE;
$conf = array (
// Set production config options here...
'example_setting' => 0,
// Turn off most core caching.
'cache_inc' => 'includes/cache.inc',
'cache' => CACHE_DISABLED,
);
break;
}
?>
Ini berfungsi cukup baik untuk sebagian besar tujuan, tetapi itu berarti kita memiliki banyak kode asing yang terdapat di file shared.php yang kita bagikan ... apakah ada cara yang lebih baik?
sumber
Jawaban:
Apa yang saya lakukan adalah memisahkan file itu menjadi settings.php dan local.settings.php.
Di akhir settings.php adalah kode berikut:
File lokal kemudian dikeluarkan dari VCS apa pun yang Anda gunakan. Keuntungannya adalah Anda dapat meletakkan pengaturan yang umum di atas semua instance di settings.php dan membuat versi / didistribusikan secara otomatis dan menyimpan barang-barang lokal di local.settings.php.
sumber
(__DIR__)
bukandirname(__FILE__)
. Mereka setara .Ini sepertinya Anda menciptakan kembali fungsionalitas multisite bawaan Drupal.
Secara pribadi, saya menyimpan semua tema standar dan modul untuk situs
sites/all
, dan kemudian memilikisites/dev.example.com
dansites/example.com
.Sebagai bonus tambahan, Anda kemudian dapat memiliki
files
folder yang berbeda untuk setiap situs, dan Anda juga dapat menambahkan modul pengembangan apa punsites/dev.example.com/modules
.sumber
sites/dev.example.com/modules
kesites/example.com/modules
Saya lebih suka mengabaikan file secara lokal (menggunakan
.gitignore
file di git) dan kemudian menyimpan versi terpisah jika file pada setiap host.sumber
Saya cenderung selalu mengatur entri file DNS atau host dan menggunakan
dan
Kemudian saya memiliki direktori file pengaturan pengaturan yang sepenuhnya terpisah dengan direktori file yang berbeda. Misalnya ./sites/dev.example.com/files
sumber
Mengapa tidak memiliki beberapa folder berdasarkan nama host pengembangan?
Contoh
Masing-masing dengan file pengaturannya sendiri dan db_url.
sumber
Jika satu-satunya hal yang berubah adalah kredensial basis data, maka Anda dapat mengatur variabel lingkungan di konfigurasi host virtual lokal Anda (dan pementasan / produksi) atau dalam .htaccess folder di atas root web Anda. Ini contoh sederhana:
/var/www/example.com/drupal-resides-here
Saya kemudian dapat membuat file .htaccess di sini:
/var/www/example.com/.htaccess
yang memiliki kode berikut:
Kemudian di
/var/www/example.com/drupal-resides-here/sites/default/settings.php
(atau apa pun) Anda dapat mengambil kredensial db seperti:$db_url = "mysql://{$_SERVER['DB1_USER']}:{$_SERVER['DB1_PASS']}@{$_SERVER['DB1_HOST']}:{$_SERVER['DB1_PORT']}/{$_SERVER['DB1_NAME']}";
Ini memungkinkan banyak pengembang menjalankan berbagai hal secara lokal dan Anda dapat mendorong ke pementasan / produksi sambil tetap melacak settings.php (ada lebih banyak hal di sana daripada hanya kredensial basis data ...). Anda juga tidak perlu melacak beberapa file settings.php.
sumber
drush up --y
? Itu akan menimpa file .htaccess dasar Anda..htaccess
file level di atas webroot. Misalnya,/var/www/.htaccess
simpan arahan ini, dan/var/www/drupal/.htaccess
akan menjadi milik Drupal.htaccess
. Anda juga bisa memasukkannya ke dalam konfigurasi host virtual Apache, yang bahkan lebih bagus. Terlepas dari semua itu, kami hampir selalu memiliki hal-hal khusus di webroot.htaccess
dan oleh karena itu jika kami memperbarui Drupal kami perlu membandingkan.htaccess
perubahan dengan Git.Solusi paling sederhana dan paling efisien yang hanya satu baris adalah sebagai berikut. Cukup sertakan di baris terakhir file settings.php Anda:
Simbol @ di bagian depan berarti tidak menampilkan kesalahan apa pun meskipun tidak menemukan file itu. Setup khas seperti ini melibatkan persyaratan untuk memeriksa apakah file itu ada. Ini menyelesaikannya dalam satu baris tanpa itu.
http://php.net/manual/en/language.operators.errorcontrol.php
Juga dikenal sebagai operator PHP STFU .
sumber