来自相同Codeigniter代码库的多个应用程序

时间:2015-10-24 19:31:35

标签: php codeigniter

我的产品有70个客户。每个客户都有一个MYSQL数据库,我正在使用Codeigniter。

我有70个子文件夹,例如domain.com/customer1/ domain.com/customer2/等等,在每个文件夹中,我都提到了特定客户的数据库详细信息,以及codeigniter安装的所有文件。

我想摆脱所有这些安装,并希望只为我的所有客户安装一个。理想情况下是domain.com/app /

实现这一目标的最佳方法是什么?

当其中一个客户端登录时,我尝试动态写入database.php文件。所以我所做的是在一个代码库的database.php文件中写入客户端的数据库详细信息,例如domain.com/app /并查看它是否有效。但它对其他客户不起作用,我想我在这里做错了。

1 个答案:

答案 0 :(得分:0)

为什么不为每个客户端使用子域,并将Web根指向该一个文件夹。您可以使用子域作为数据库名称。

VHOST:

<VirtualHost *:80>
        ServerName client.domain.com 
    ServerAlias *.domain.com
        DocumentRoot /home/clients/public_html 
        <Directory /home/clients/public_html>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
        </Directory>

</VirtualHost>

然后像这样修改database.php

$client_name = substr($_SERVER['HTTP_HOST'], 0, strpos($_SERVER['HTTP_HOST'], '.'));

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'localhost',
    'username' => 'username',
    'password' => 'password',
    'database' => "$client_name",
    'dbdriver' => 'mysqli',
    'dbprefix' => 'phppos_',
    'pconnect' => FALSE,
    'db_debug' => FALSE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => FALSE