实时版本和开发版本的相同数据库

时间:2017-04-23 作者:Lee Baz

我想在传输之前使用live DB运行我的测试站点来测试一些东西。我知道我可以复制数据库,但我必须随着现场的进展不断更新。

我跟着this Wordpress instruction 使用db。php,我把它放在两个网站的wp内容文件夹中,但它似乎不起作用。

有人能帮忙吗?网站是http://routemaster.lkWIP站点是rmdemo。bazcreative。com公司

数据库。php具有以下代码:

<?php
// paste this in a (new) file, wp-content/db.php
add_filter ( \'pre_option_home\', \'test_localhosts\' );
add_filter ( \'pre_option_siteurl\', \'test_localhosts\' );
function test_localhosts( ) {
 if (strcasecmp($_SERVER[\'REQUEST_URI\'], \'rmdemo.bazcreative.com\') == 0
      || strcasecmp(substr($_SERVER[\'REQUEST_URI\'], 0, 5), \'rmdemo.bazcreative.com\') == 0) {
      return "http://rmdemo.bazcreative.com";
   }
  else return false; // act as normal; will pull main site info from db
}

1 个回复
SO网友:Jonathan Hodgson

让两个站点运行同一个数据库是不好的做法。如果要在其中一个上执行插件/核心更新,这一点尤其正确。

使用诸如migrate db之类的工具会更好(https://wordpress.org/plugins/wp-migrate-db/) 执行迁移。

migrate db的维护人员也在研究Mergebot(https://deliciousbrains.com/mergebot-beta-update-plugin-integrations-query-selection/) 虽然目前仍处于测试阶段,但它应该可以安全地保持数据库同步。

否则,您应该查看您的if语句:

我想你可能想问一下$_SERVER[\'HTTP_HOST\'] 而不是$_SERVER[\'REQUEST_URI\']. 请求uri将为您提供域后的url位。Http主机将为您提供发出请求的域(和子域)。

您最终会得到:

<?php
// paste this in a (new) file, wp-content/db.php
add_filter ( \'pre_option_home\', \'test_localhosts\' );
add_filter ( \'pre_option_siteurl\', \'test_localhosts\' );
function test_localhosts( ) {
 if (strcasecmp($_SERVER[\'HTTP_HOST\'], \'rmdemo.bazcreative.com\') == 0) {
      return "http://rmdemo.bazcreative.com";
   }
  else return false; // act as normal; will pull main site info from db
}
有一件事我一定要检查,那就是很容易忘记:

确保已清除浏览器缓存。浏览器喜欢将重定向缓存太长时间。如果您在实现此功能之前访问了“dev”站点,您将被重定向到实时站点

相关推荐

Replace domain in database

我的网站受到攻击,所以基本上所有的核心php文件都已损坏。只剩下数据库。现在我在本地主机中进行了尝试。如果我想从这个数据库恢复我的站点,域名是我唯一需要替换字符串的东西吗</我找到了这个教程-Replace string in database - 更改所有表中的域字符串,但几乎不知道将其放入何处以及如何在wordpress中触发它