3

我最近将一个多站点网络移至一个新域。目前网络中只有 1 个站点(我正在为网络构建站点,我正在将这个站点推送到暂存服务器进行测试)。

要移动站点,我执行了以下操作:

  • 传输所有文件
  • 从数据库 A 中导出完整数据库并在暂存时导入数据库 B
  • 对所有表运行一系列查找和替换查询,以用新域替换旧域
  • wp-config.php使用正确的数据库信息和更新后的 URL更新了我在登台服务器上的文件

在这个阶段,几乎所有东西都可以完美运行,除了主题定制。我意识到这是作为序列化数组存储的,并且我已经相应地更新了每个字段的长度。有关存储值,请参见下文:

a:19:{i:0;b:0;s:8:"tcx_logo";s:72:"http://stange.********.com/wp-content/uploads/2014/11/***-***-bottle.png";s:13:"tcx_address_1";s:12:"***** Avenue";s:13:"tcx_address_2";s:0:"";s:12:"tcx_citytown";s:7:"*******";s:10:"tcx_county";s:6:"******";s:12:"tcx_postcode";s:8:"**** ***";s:11:"tcx_country";s:0:"";s:7:"tcx_lat";d:**.**********0000076470314525067806243896484375;s:7:"tcx_lng";d:-*.**********00000065853100750246085226535797119140625;s:12:"tcx_facebook";s:12:"************";s:11:"tcx_twitter";s:12:"************";s:18:"nav_menu_locations";a:2:{s:9:"main-menu";i:2;s:6:"footer";i:3;}s:16:"tcx_openingtimes";s:0:"";s:13:"tcx_foodtimes";s:225:"<dl class="dl-horizontal">
    <dt>Monday to Thursday:</dt>
    <dd>12noon - 2:30pm & 5:30pm - 9:00pm</dd>

    <dt>Friday & Saturday:</dt>
    <dd>12noon - 2:30pm & 5:30pm - 9:00pm</dd>

    <dt>Sunday:</dt>
    <dd>12noon - 8:00pm</dd>
</dl>";s:13:"tcx_telephone";s:13:"**** *** 5535";s:9:"tcx_email";s:27:"info@****************.co.uk";s:14:"tcx_bookatable";s:17:"Bookatable Widget";s:10:"tcx_seekom";s:13:"Seekom Widget";}

敏感信息已被******删除。

每当我访问主题的自定义区域时,我都会看到字段,但看不到任何值。前端也没有显示任何存储的值,这让我相信这是数据库中这个字段的问题。

有任何想法吗?

4

1 回答 1

0

您的问题似乎与此部分有关:

s:225:"<dl class="dl-horizontal">
    <dt>Monday to Thursday:</dt>
    <dd>12noon - 2:30pm & 5:30pm - 9:00pm</dd>

    <dt>Friday & Saturday:</dt>
    <dd>12noon - 2:30pm & 5:30pm - 9:00pm</dd>

    <dt>Sunday:</dt>
    <dd>12noon - 8:00pm</dd>
</dl>"

...我认为您计算错误的字符的地方。当然,如果我剪切并粘贴您的版本——并替换您在数字字段中输入的星号——我需要将长度设置为 243,而不是 224,以便正确反序列化。但是,鉴于在 Stack Overflow 之间进行复制和粘贴可能会造成混淆,因此很难确定。几乎可以肯定,空白中存在一些问题,这将使其难以诊断。

如果手动更新序列化有问题,您应该至少在服务器错误日志中看到错误,这将帮助您查明问题,例如“PHP Notice: unserialize(): Error at offset X of Y bytes在 /path/to/file.php" 中,这可能会给你一些线索。

我建议不要手动更新长度,而是使用专门为此目的设计的脚本,它将反序列化数据库中的值,进行替换,然后重新序列化它们。在将 WordPress 数据库推送到我的临时站点时,我正是出于此目的使用Search-Replace-DB

于 2014-12-22T17:53:20.933 回答