如何善用 settings.php 幫助 deployment, 區分 dev, live 伺服器

Live 和 Dev (開發) 的伺服器雖然說是應該完全一樣 (無論數據庫還是代碼上)
但始終都需要區分它們
例如使用不同的數據庫連接, site name 變數不一樣等等
令 deployment 的時需要多花些功夫
例如使用 svn branch 分開兩份 settings.php
但方便的程度便不及我以下介紹的這個方法了

編程概念很簡單
利用 dev 伺服器使用 dev.example.com, 而live 使用 www.example.com 作區分
php 中的 <?php $SERVER['HTTP_HOST'] ?>便可以得出 domain name
settings 中便可以:

<?php
if ($_SERVER['HTTP_HOST']=='dev.example.com') {
 
$db_url = 'mysql://root@localhost/dev_db';
} elseif (
$_SERVER['HTTP_HOST']=='www.example.com') {
 
$db_url = 'mysql://root@localhost/live_db';
}
?>

更可以配合使用 $conf 變數方便其他地方使用, 例:

<?php
$conf
['env'] = 'dev';
$conf['site_name'] = 'Development server';
?>
Google