一个php项目的config 文件的本地测试版本和服务器上的正式版本常常会不同(例如:在 config 中设置 mysql连接的用户名和密码,可是本地测试数据库 跟 服务器上的数据库很可能不同),这就给svn带来了麻烦。虽然可以通过 svn:ignore 属性来忽略这些 config 这些,可是 当config 文件的内容发生变化时,merge 会很麻烦(尤其你通过 ssh 管理服务器的话,没有gui的 diff 工具)。
我的解决办法是将配置数据设置为服务器的环境变量,在config 中使用这些环境变量,例如一个config 文件:
<?
// ... ...
// 数据库 首选参数
JCAT_DB::$sPreferredFactory = 'JCAT_DBFactoryMySQL41' ;
JCAT_DB::$sPreferredDBServer = 'localhost' ;
JCAT_DB::$sPreferredDBName = SameDB' ;
JCAT_DB::$sPreferredDBUser = 'root' ;
JCAT_DB::$sPreferredDBPassword = '' ;
// ... ...
?>
可以 改为:
<?
// ... ...
// 数据库 首选参数
JCAT_DB::$sPreferredFactory = $_SERVER['DBPreferredFactory'];
JCAT_DB::$sPreferredDBServer = $_SERVER['DBPreferredServer'];
JCAT_DB::$sPreferredDBName = $_SERVER['DBPreferredName'];
JCAT_DB::$sPreferredDBUser = $_SERVER['DBPreferredUser'];
JCAT_DB::$sPreferredDBPassword = $_SERVER['DBPreferredPassword'];
// ... ...
?>
然后在 apache 的配置文件中(或 .htaccess) 中设置:
SetEnv DBPreferredFactory 'JCAT_DBFactoryMySQL41'
SetEnv DBPreferredServer 'localhost'
SetEnv DBPreferredName 'SameDB'
SetEnv DBPreferredUser 'root'
SetEnv sPreferredDBPassword ''
(说明:SetEnv 属于 mod_env.so 所以必须先确保该模块可用)
在 php.ini 设置
safe_mode_allowed_env_vars=DB
重启 apache
我的解决办法是将配置数据设置为服务器的环境变量,在config 中使用这些环境变量,例如一个config 文件:
<?
// ... ...
// 数据库 首选参数
JCAT_DB::$sPreferredFactory = 'JCAT_DBFactoryMySQL41' ;
JCAT_DB::$sPreferredDBServer = 'localhost' ;
JCAT_DB::$sPreferredDBName = SameDB' ;
JCAT_DB::$sPreferredDBUser = 'root' ;
JCAT_DB::$sPreferredDBPassword = '' ;
// ... ...
?>
可以 改为:
<?
// ... ...
// 数据库 首选参数
JCAT_DB::$sPreferredFactory = $_SERVER['DBPreferredFactory'];
JCAT_DB::$sPreferredDBServer = $_SERVER['DBPreferredServer'];
JCAT_DB::$sPreferredDBName = $_SERVER['DBPreferredName'];
JCAT_DB::$sPreferredDBUser = $_SERVER['DBPreferredUser'];
JCAT_DB::$sPreferredDBPassword = $_SERVER['DBPreferredPassword'];
// ... ...
?>
然后在 apache 的配置文件中(或 .htaccess) 中设置:
SetEnv DBPreferredFactory 'JCAT_DBFactoryMySQL41'
SetEnv DBPreferredServer 'localhost'
SetEnv DBPreferredName 'SameDB'
SetEnv DBPreferredUser 'root'
SetEnv sPreferredDBPassword ''
(说明:SetEnv 属于 mod_env.so 所以必须先确保该模块可用)
在 php.ini 设置
safe_mode_allowed_env_vars=DB
重启 apache
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2230/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
评论列表