17.4.9
mysqldump
因为租用的阿里云服务器ECS到期了,着手将博客搬到更便宜的共享虚拟主机上。之前安装的环境是MySQL5.5.54,PHP5.5.9,Apache2;共享虚拟主机提供的环境是MySQL5.1以下,PHP5.5以下。因此MySQL使用mysqldump
导出的时候,需要加上一个--compatible=mysql40
的参数。
这样设置后导出的sql文件里中文全都是???
,而不加--compatible
参数导出的则能够正常显示。尝试再加上设置--default-character-set=utf8
,中文就正常显示了。到MySQL4的mysqldump
文档下查看,原来是这个原因:
**MySQL 3.23, 4.0, 4.1 Reference Manual - 4.5.4 mysqldump**
--default-character-set=charset_name
Use charset_name as the default character set. See Section 9.6, “Character Set Configuration”. If no character set is specified, mysqldump from MySQL 4.1.2 or later uses utf8, and earlier versions use latin1.
本机数据库
MySQL重新导入的时候,共享虚拟主机只允许用户用分配的数据库用户和数据库名,因此需要修改导出的sql文件中开头的Create DATABASE <database_name>; USE <database_name>
语句,以及修改WordPress的wp-config文件。
WordPress数据库中的wp_option
表的home
和siteurl
需要修改,否则会使用原服务器的地址。若没有修改这两项就直接访问网站,跳转到原网址成功,再修改完当前数据库的wp-options
表后 - 也需要到之前的服务器上的数据库那里修改它的wp_options
的表中的home
和siteurl
。至少在我这里那边的也自动转成了我当前的地址,不知道是怎么触发的。
这样改来改去站点网址,到了用浏览器访问网站的时候,总会出现疑似的延迟的现象,还是会跳转到之前的设置。来回检查了几次之后,我发现首先需要排除的是:浏览器对于网址跳转的记忆功能。因为我换了新的没有访问过网址的浏览器就能顺利地使用我设置之后的网址了。
.htaccess
使用.htaccess将域名解析到子文件夹。WordPress数据库中的wp_posts表的guid
和post_content
中用REPLACE
函数将原站点的地址更换为现在的主机地址。
内页均是空白。/wp_admin
也无法进入。按照这篇文章的建议,在子文件夹中再建立一个.htaccess
文件并输入以下内容:
RewriteEngine On
# 禁止通过非本网站域名访问
RewriteCond %{HTTP_HOST} !^(www.)?aaa.com$ [NC] #改
RewriteRule ^.*$ [L,r=404]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . site1/index.php [L] #改了这一行
</IfModule>
# END WordPress
没有效果。
【过段时间再来看.htaccess的用法吧orz
Warning: Cannot modify header information
打开wp-config文件将WP_DEBUG
开启,浏览器进入/wp_admin
页面上显示错误信息:
Notice: register_sidebar_widget is deprecated since version 2.8.0! Use wp_register_sidebar_widget() instead. in /data/home/***/htdocs/wordpress/wp-includes/functions.php on line 3829
Warning: Cannot modify header information - headers already sent by (output started at /data/home/***/htdocs/wordpress/wp-includes/functions.php:3829) in /data/home/***/htdocs/wordpress/wp-includes/pluggable.php on line 1179
将根目录和子文件夹里的.htaccess的内容都删掉,改数据库中相应值。可以进入内页,但所有包括主页的顶端都有以上错误信息提示。/wp-admin无法进入并报如同以上的错误。手动/wp-login.php也是同样。
...将php.ini中的output_buffering - 『输出缓冲区』从禁用改为启用,就不再报Warning那一行的问题,只有Notice的deprecated的提示,不影响使用。