使用PHP动态写入配置文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用PHP动态写入配置文件相关的知识,希望对你有一定的参考价值。
实现SAAS(多租户)应用程序,我的情况是应用程序需要根据想要登录的用户连接到不同的数据库。数据库适用于不同的机构。让我们说机构A的MANAGER-A,机构B的MANAGER-B,想要登录他们的各种机构。
我正在实施的过程是:涉及3个数据库:DEFAULT-DB,INSTITUTION-A-DB,INSTITUTION-B-DB。 DEFAULT-DB包含每个用户的所有登录和数据库凭据。这意味着在MANAGER-A可以登录他的应用程序之前,首先,他将登录到DEFAULT-DB,如果成功,他的详细信息将被提取并记录并设置为配置的参数。 php文件。这意味着连接将基于DEFAULT-DB提取和传递的参数进行动态处理。我的问题是这些:
如何动态地将这些参数写入config.php文件?
其次,如果我的实施不是最好的,我向专家提供建议。
Config.php文件
<?php
unset($CFG);
global $CFG;
$CFG = new stdClass();
$CFG->dbtype = 'mysqli';
$CFG->dblibrary = 'native';
$CFG->dbhost = 'localhost';
$CFG->dbname = 'mydb';
$CFG->dbuser = 'root';
$CFG->dbpass = '';
$CFG->prefix = 'my_';
$CFG->dboptions = array (
'dbpersist' => 0,
'dbport' => '',
'dbsocket' => '1',
'dbcollation' => 'utf8mb4_unicode_ci',
);
$CFG->wwwroot = 'http://localhost:8888/myapp';
$CFG->dataroot = '/Applications/MAMP/data/myapp_data';
$CFG->admin = 'admin';
$CFG->directorypermissions = 0777;
require_once(dirname(__FILE__) . '/lib/setup.php');
这是Moodle。我尝试过IOMAD,它是一个很棒的应用程序,但不能解决我的需求。
这是一个糟糕的解决方案,恕我直言。当您重写配置文件时,当下一个请求加载该文件时会发生什么?他们将加载错误的配置。
我将创建另外两个配置文件:config_inst_a.php和config_inst_b.php。然后在用户登录时设置一个包含要加载的设置文件名的会话变量。然后,您可以在其他设置文件中重新定义数据库信息变量。如果会话变量中包含文件名,请在默认配置之后加载该文件,并替换数据库连接值。
添加了示例代码:
真的,非常简短:
// Log in user here, and get info about what user company..
$session_start();
$_SESSION['User_ConfigFile'] = 'settings'.$userCompany.'.php';
// More code, or page redirect, or whatever, but the below goes on every page AFTER the default DB is included:
$session_start();
require_once($_SESSION['User_ConfigFile']);
以上是关于使用PHP动态写入配置文件的主要内容,如果未能解决你的问题,请参考以下文章