对于每个客户,您唯一需要知道的是数据库连接的用户、密码、dbname 和主机名。我只需将它们存储在一个配置文件中,每个客户一个,根据客户命名:
/path/to/configs/customer1.ini
/path/to/configs/customer2.ini
/path/to/configs/customer3.ini
然后,您的应用程序会根据 VHOST 中设置的环境变量甚至 $_SERVER['HTTP_HOST'] 中的值来选择要加载的配置文件。
例如,您的 index.php 可能具有以下内容:
if (!preg_match('/pattern to ensure valid hostname/', $_SERVER['HTTP_HOST'])) {
header('HTTP/1.1 403 Forbidden');
exit;
}
$config = '/path/to/configs/' . $_SERVER['HTTP_HOST'] . '.ini';
if (!file_exists($config)) {
header('HTTP/1.1 404 Not Found');
exit;
}
require_once $config;
然后创建:
/path/to/configs/customer.com.ini
作为:
dbname = whatever
user = whatever
pass = whatever
dbhost = whatever
(呃,对不起,你不会 require_once 一个 ini 文件,但你明白了......)