用 SQL 的 REPLACE 语句把旧域名批量换成新域名 后台小工具和主题设置页一保存就全部白屏 日志里报 unserialize 失败。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,主题选项和小工具配置在 options 表里存的是序列化字符串 长度前缀写着 s:32 域名一长一短长度就对不上 PHP 反序列化直接返回 false 整段数据作废。

「序列化数据替换」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。改完顺手把文档补一句,省得下次自己重新推一遍。

wp search-replace old.com new.com --all-tables --dry-run
wp search-replace old.com new.com --all-tables --precise
wp cache flush

监控和日志的时间要对上,时区不一致会多绕很大一圈。

具体做法是,别再对 options 和 postmeta 直接跑 SQL 替换语句 改成 wp search-replace 让它走序列化解析;先加 --dry-run 跑一遍 看它报出多少处需要修改 再决定是否真的落库;改完打开小工具页和主题设置页 序列化坏掉的地方会立刻白屏 别急着继续下一步。

最后用这个标准收尾,小工具页能正常打开 主题设置读出来还是完整数组而不是空值。

作者 9823189