我有一个Wordpress 5.5/PHP7.3多站点生产站点安装,我正在尝试将其迁移到本地LAMP开发环境,以便进行编辑。
The Problem: 就是在运行Search Replace DB脚本或WP Cli多站点迁移脚本时。一个子网站完美地加载到新的开发域上,同时主网站和具有相同主题的子网站成功加载,但主题似乎已中断(基于visual composer)。可能还有其他非视觉错误。
我已经下载了所有文件,正确配置了LAMP virtualhost,并通过PHPMYADMIN将数据库导入到我的本地LAMP环境中(NOTE: 在导出生产数据库之前,我网络停用了Yoast SEO插件)。
我的多站点有以下URL需要更改:
1)示例。组织-->;本地主机。实例组织机构
2)网络研讨会。实例组织-->;网络研讨会。本地主机。实例组织机构
3)博客。实例组织-->;博客本地主机。实例org(映射到“otherdomainname.org”的域)--完美无瑕
ERROR MESSAGES:
尽管网络停用了Yoast SEO插件,但在按照建议导出到产品之前,我在执行Search Replace DB时收到以下错误:
The dry-run option was selected. No replacements will be made.
The table "tclrx_2_cleantalk_sfw" has no primary key. Changes will have to be made manually.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
2: Erroneous data format for unserializing \'ActionScheduler_IntervalSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
This is usually caused by a plugin storing classes as a serialised string which other PHP classes can\'t then access. It is not possible to unserialise this data because the PHP can\'t access this class. P.S. It\'s most commonly a Yoast plugin that causes this error. Your changes will still have taken place within the rest of the database.
The table "tclrx_7_cleantalk_sfw" has no primary key. Changes will have to be made manually.
2: Erroneous data format for unserializing \'ActionScheduler_NullSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_SimpleSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_SimpleSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_NullSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_NullSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_NullSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_SimpleSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_SimpleSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'ActionScheduler_SimpleSchedule\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
The table "tclrx_cleantalk_sfw" has no primary key. Changes will have to be made manually.
syntax error, unexpected \'\\\' (T_NS_SEPARATOR), expecting \'{\'
2: Erroneous data format for unserializing \'FS_Plugin\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
2: Erroneous data format for unserializing \'WP_User\' in /var/www/html/example.org/DP-Search-Replace-DB/srdb.class.php on line 833
当执行Search Replace DB时(不是干运行),我遇到了上面描述的问题:主题被破坏,可能还有其他非视觉错误。
因此,此时我安装了WP Cli并运行了以下多站点兼容迁移脚本found here:
# Bash script: Search/replace production to development url (multisite compatible)
#!/bin/bash
if $(wp --url=example.org core is-installed --network); then
wp search-replace --url=example.org \'example.org\' \'localhost.example.org\' --recurse-objects --network --skip-columns=guid --skip-tables=wp_users
else
wp search-replace \'example.org\' \'example.org\' --recurse-objects --skip-columns=guid --skip-tables=wp_users
fi
它成功执行,但生成以下错误:
Warning: Skipping an uninitialized class "Stripe\\ApplePayDomain", replacements might not be complete.
Warning: Skipping an uninitialized class "FS_Plugin", replacements might not be complete.
Warning: Skipping an uninitialized class "FS_Plugin", replacements might not be complete.
+------------------------+-----------------------+--------------+------+
| Table | Column | Replacements | Type |
+------------------------+-----------------------+--------------+------+
| wp_2_commentmeta | meta_key | 0 | SQL |
| wp_2_commentmeta | meta_value | 0 | SQL |
| wp_2_comments | comment_author | 0 | SQL |
| wp_2_comments | comment_author_email | 0 | SQL |
| wp_2_comments | comment_author_url | 0 | SQL |
| wp_2_comments | comment_author_IP | 0 | SQL |
| wp_2_comments | comment_content | 0 | SQL |
| wp_2_comments | comment_approved | 0 | SQL |
| wp_2_comments | comment_agent | 0 | SQL |
| wp_2_comments | comment_type | 0 | SQL |
| wp_2_links | link_url | 0 | SQL |
| wp_2_links | link_name | 0 | SQL |
| wp_2_links | link_image | 0 | SQL |
| wp_2_links | link_target | 0 | SQL |
| wp_2_links | link_description | 0 | SQL |
| wp_2_links | link_visible | 0 | SQL |
| wp_2_links | link_rel | 0 | SQL |
| wp_2_links | link_notes | 0 | SQL |
| wp_2_links | link_rss | 0 | SQL |
| wp_2_options | option_name | 0 | SQL |
| wp_2_options | option_value | 48 | PHP |
| wp_2_options | autoload | 0 | SQL |
| wp_2_postmeta | meta_key | 0 | SQL |
| wp_2_postmeta | meta_value | 2 | PHP |
| wp_2_posts | post_content | 889 | SQL |
| wp_2_posts | post_title | 0 | SQL |
| wp_2_posts | post_excerpt | 0 | SQL |
| wp_2_posts | post_status | 0 | SQL |
| wp_2_posts | comment_status | 0 | SQL |
| wp_2_posts | ping_status | 0 | SQL |
| wp_2_posts | post_password | 0 | SQL |
| wp_2_posts | post_name | 0 | SQL |
| wp_2_posts | to_ping | 0 | SQL |
| wp_2_posts | pinged | 0 | SQL |
| wp_2_posts | post_content_filtered | 0 | PHP |
| wp_2_posts | post_type | 0 | SQL |
| wp_2_posts | post_mime_type | 0 | SQL |
| wp_2_term_taxonomy | taxonomy | 0 | SQL |
| wp_2_term_taxonomy | description | 0 | SQL |
| wp_2_termmeta | meta_key | 0 | SQL |
| wp_2_termmeta | meta_value | 0 | SQL |
| wp_2_terms | name | 0 | SQL |
| wp_2_terms | slug | 0 | SQL |
| wp_7_commentmeta | meta_key | 0 | SQL |
| wp_7_commentmeta | meta_value | 0 | PHP |
| wp_7_comments | comment_author | 0 | SQL |
| wp_7_comments | comment_author_email | 0 | SQL |
| wp_7_comments | comment_author_url | 0 | SQL |
| wp_7_comments | comment_author_IP | 0 | SQL |
| wp_7_comments | comment_content | 0 | SQL |
| wp_7_comments | comment_approved | 0 | SQL |
| wp_7_comments | comment_agent | 0 | SQL |
| wp_7_comments | comment_type | 0 | SQL |
| wp_7_links | link_url | 0 | SQL |
| wp_7_links | link_name | 0 | SQL |
| wp_7_links | link_image | 0 | SQL |
| wp_7_links | link_target | 0 | SQL |
| wp_7_links | link_description | 0 | SQL |
| wp_7_links | link_visible | 0 | SQL |
| wp_7_links | link_rel | 0 | SQL |
| wp_7_links | link_notes | 0 | SQL |
| wp_7_links | link_rss | 0 | SQL |
| wp_7_options | option_name | 0 | SQL |
| wp_7_options | option_value | 13 | PHP |
| wp_7_options | autoload | 0 | SQL |
| wp_7_postmeta | meta_key | 0 | SQL |
| wp_7_postmeta | meta_value | 91 | PHP |
| wp_7_posts | post_content | 22 | SQL |
| wp_7_posts | post_title | 0 | SQL |
| wp_7_posts | post_excerpt | 0 | SQL |
| wp_7_posts | post_status | 0 | SQL |
| wp_7_posts | comment_status | 0 | SQL |
| wp_7_posts | ping_status | 0 | SQL |
| wp_7_posts | post_password | 0 | SQL |
| wp_7_posts | post_name | 0 | SQL |
| wp_7_posts | to_ping | 0 | SQL |
| wp_7_posts | pinged | 0 | SQL |
| wp_7_posts | post_content_filtered | 0 | PHP |
| wp_7_posts | post_type | 0 | SQL |
| wp_7_posts | post_mime_type | 0 | SQL |
| wp_7_term_taxonomy | taxonomy | 0 | SQL |
| wp_7_term_taxonomy | description | 0 | SQL |
| wp_7_termmeta | meta_key | 0 | SQL |
| wp_7_termmeta | meta_value | 0 | SQL |
| wp_7_terms | name | 0 | SQL |
| wp_7_terms | slug | 0 | SQL |
| wp_blogmeta | meta_key | 0 | SQL |
| wp_blogmeta | meta_value | 0 | SQL |
| wp_blogs | domain | 3 | SQL |
| wp_blogs | path | 0 | SQL |
| wp_commentmeta | meta_key | 0 | SQL |
| wp_commentmeta | meta_value | 24 | PHP |
| wp_comments | comment_author | 0 | SQL |
| wp_comments | comment_author_email | 0 | SQL |
| wp_comments | comment_author_url | 0 | SQL |
| wp_comments | comment_author_IP | 0 | SQL |
| wp_comments | comment_content | 11 | SQL |
| wp_comments | comment_approved | 0 | SQL |
| wp_comments | comment_agent | 21 | SQL |
| wp_comments | comment_type | 0 | SQL |
| wp_links | link_url | 0 | SQL |
| wp_links | link_name | 0 | SQL |
| wp_links | link_image | 0 | SQL |
| wp_links | link_target | 0 | SQL |
| wp_links | link_description | 0 | SQL |
| wp_links | link_visible | 0 | SQL |
| wp_links | link_rel | 0 | SQL |
| wp_links | link_notes | 0 | SQL |
| wp_links | link_rss | 0 | SQL |
| wp_options | option_name | 0 | SQL |
| wp_options | option_value | 33 | PHP |
| wp_options | autoload | 0 | SQL |
| wp_postmeta | meta_key | 0 | SQL |
| wp_postmeta | meta_value | 31 | PHP |
| wp_posts | post_content | 488 | SQL |
| wp_posts | post_title | 0 | SQL |
| wp_posts | post_excerpt | 0 | SQL |
| wp_posts | post_status | 0 | SQL |
| wp_posts | comment_status | 0 | SQL |
| wp_posts | ping_status | 0 | SQL |
| wp_posts | post_password | 0 | SQL |
| wp_posts | post_name | 0 | SQL |
| wp_posts | to_ping | 0 | SQL |
| wp_posts | pinged | 0 | SQL |
| wp_posts | post_content_filtered | 0 | PHP |
| wp_posts | post_type | 0 | SQL |
| wp_posts | post_mime_type | 0 | SQL |
| wp_registration_log | email | 6 | SQL |
| wp_registration_log | IP | 0 | SQL |
| wp_signups | domain | 0 | SQL |
| wp_signups | path | 0 | SQL |
| wp_signups | title | 0 | SQL |
| wp_signups | user_login | 0 | SQL |
| wp_signups | user_email | 2 | SQL |
| wp_signups | activation_key | 0 | SQL |
| wp_signups | meta | 0 | PHP |
| wp_site | domain | 1 | SQL |
| wp_site | path | 0 | SQL |
| wp_sitemeta | meta_key | 0 | SQL |
| wp_sitemeta | meta_value | 10 | PHP |
| wp_term_taxonomy | taxonomy | 0 | SQL |
| wp_term_taxonomy | description | 0 | SQL |
| wp_termmeta | meta_key | 0 | SQL |
| wp_termmeta | meta_value | 0 | SQL |
| wp_terms | name | 0 | SQL |
| wp_terms | slug | 0 | SQL |
| wp_usermeta | meta_key | 0 | SQL |
| wp_usermeta | meta_value | 9 | PHP |
| wp_users | user_login | 0 | SQL |
| wp_users | user_nicename | 0 | SQL |
| wp_users | user_email | 5 | SQL |
| wp_users | user_url | 0 | SQL |
| wp_users | user_activation_key | 0 | SQL |
| wp_users | display_name | 0 | SQL |
+------------------------+-----------------------+--------------+------+
Success: Made 1709 replacements.
这两种准不同的db迁移方法导致了完全相同的错误,因此我显然遗漏了一些东西。
有什么建议吗?