WordPress 问题汇总1

本文涉及 整站的备份和恢复、后台导出数据、修改“WordPress地址”后登录不上、Mac本地调试WP遇到的问题;

1、整站的备份和恢复

备份

整站的备份还没仔细研究过,今天刚试了一个简单粗暴有效的方法:

网站备份:直接把根目录下的所有文件通过FTP同步到了本地;
实际上只要导出 wp-content 文件夹和几个根目录下的文件即可;

数据库备份:登录后台的 phpmyadmin,打开对应的数据库,选中所有表点导出,一个 xx.sql 的文件就下载下来了,里边是 sql 语句,只包含创建表、插入数据;

恢复

没想到这么快就进行了一次恢复操作;

今天上午在研究导入导出,因为 mysql 备份下来的 sql 语句不包含检测数据库是否存在、创建数据库等操作,恢复时需要一个空的数据库,要把之前的数据库删掉重建一个(或者把所有表都删除,我嫌麻烦直接删库);
刚从线上导出了数据,线上数据库管理页面没关,就把线上的库删了…

新建数据库,点导入,选文件,执行,结果 sql 文件大小超过限制,默认是 2M,我备份的文件是 2.2M,大小超限,需要修改 PHP 的配置文件:

1. 用 find / -name php.ini 命令查找 php.ini 配置文件的地址:

搜出来三个,需要改第二个,apache2/php.ini,我一开始改了第一个 fpm/php.ini,怎么也不好使,后来又查资料,最终发现改错配置文件了;

2. 打开配置文件,修改 upload_max_filesize 的值,大小看情况,默认应该是 2M;
然后查看 post_max_size、memory_limit,保证这三个字段对应值的大小符合:
upload_max_filesize < post_max_size < memory_limit;
也不难理解,post 上传文件大小 肯定要小于 post请求的数据量 大小,也肯定要小于分配的内存大小,否则接收到数据但是放不下就挂了;

除了尺寸大小,还有两个控制时间的参数,根据情况自己修改:max_execution_time(php页面执行最大时间)、max_input_time(php页面接受数据最大时间);

3. 重启服务器,一定记得重启服务器;我常用的是 service apache2 restart,还有两种常用的写法,需要的请查看 WordPress 站点的搭建和维护,文章最后有介绍命令;

4、再次导入就可以了;

大小限制的问题,还一个简单的方法,可用于紧急恢复数据量少的场景;导入数据的时候,也支持压缩包,压缩 sql 文件(文件会小很多),命名 xx.sql.zip,小于2M的话上传就可以了;

*5、如果 php.ini 中的 memory_limit 没有设置或没有限制,需要修改 /usr/share/phpmyadmin/import.php 中这个代码:

if(empty($memory_limit)){
    $memory_limit=2*1024*1024;
}
if(($memory_limit)==-1){
    $memory_limit=10*1024*1024;
}

运行时,首先取 php.ini 中的 memory_limit,如果为空则设置内存大小为2M,如果没有限制(没有该设置项)则内存大小限制为10M;修改其中的2和10即可;如果 php.ini 中设置了就不用管这两个地方;

2、WP 后台导出数据

WP 后台,左侧菜单“工具” – “导出”,可以导出文章数据,导出文件格式为 xml,内容为“所有文章、页面、评论、自定义字段、条目信息(分类和标签等)、导航菜单以及自定义文章”;

恢复的时候需要通过 “WordPress” 导入器插件上传文件导入数据;

菜单中还一个 “导出个人数据”,以为是什么大功能,就试了下,结果到了最终下载的时候,提示“未能生成导出文件。ZipArchive不可用”;本地下载却没问题;

拿这个报错信息搜了好久也没找到解决方案,后来是到项目中找报错信息,找到英文版错误信息,又找到了报错的方法,最终从 这里 找到了解决方案,折腾了一番,好像就装个 php-zip,我的是7.0,所以用下面这个代码:

sudo apt-get install php7.0-zip

然而,做了这么多事儿,最终导出来的是一个 HTML 页面,页面显示当前的用户名、邮箱、昵称、注册时间啥的,没什么用;
所以这个“导出个人数据”的功能就不要试了,一点儿用没有

3、后台修改“WordPress地址”后登录不上

刚备案和域名解析完成后,需要到后台设置中修改这两个地址,如果只修改WordPress 地址,后台就登录不上了;只改站点地址是没问题的;

解决方案:

下面列了三种解决方案,最终效果都是修改数据库,因为两个 url 值是存在数据库中的,想改哪个地址就设置哪一个;

1. 直接修改数据库中 wp-options 表中 option_name 为 siteurl、home 的 option_value;
siteurl 对应 WordPress地址,home 对应 站点地址;

2. 在根目录下的 wp-config.php 最后添加下面两句代码:

update_option('siteurl','http://localhost/wordpress'); # WordPress 地址
update_option('home','http://localhost/wordpress'); # 站点地址

然后随便访问一个页面,重新回到上面设置的地址就可以登录了,成功后别忘了把这两句代码删掉;

3. 也可以在 wp-config.php 中添加下面两句代码,这个和上面唯一的不同就是默认登录上之后,页面上这两个地址是不能编辑的,define 相当于写死,update_option 只是更新值;

define( 'WP_SITEURL', 'http://localhost/wordpress' ); # WordPress 地址
define( 'WP_HOME', 'http://localhost/wordpress' ); # 站点地址

但是在当前这个场景中,define 和 update_option 作用一样,因为改完地址之后,我们就把它们删掉了,define 的锁定效果就消失了;

4、Mac本地调试相关

Mac 跑 WordPress,可以直接装 XAMPP,一定要下载最新的版本
本地是下载 xxx-installer.dmp,以虚拟机的方式装是下载 xxx-vm.dmp;
XAMPP 装上之后有三个服务,Mysql、apache 和 FTP

可以直接通过 http://localhost/phpmyadmin 访问 Mysql 数据库,默认没有密码,修改密码可以通过下面的命令,按照提示一步步设置就可以了:

sudo /Applications/XAMPP/xamppfiles/xampp security

XAMPP 相关参考:Mac下如何安装WordPress在Mac下安装XAMPPMAC OS下修改XAMPP自带的Mysql登录密码


如果 WordPress 没有放在服务器的根目录下,FTP 需要特殊设置,否则安装主题或插件会报错,比如我本地 wp 是放在根目录下的 wordpress 文件夹中:

define('FTP_BASE', 'wordpress');
define('FTP_CONTENT_DIR', 'wordpress/wp-content');
define('FTP_PLUGIN_DIR', 'wordpress/wp-content/plugins/');
define('FTP_THEMES_DIR', 'wordpress/wp-content/themes/');
define('FS_METHOD', 'direct');

5、禁用评论功能

最近(2019-12-27)接到腾讯的电话,要求网站关闭评论功能;这次关闭是永久关闭,需要干净利落的下线;但后台只能设置某篇或某段时间的文章关闭评论,所以需要修改源代码;需要修改两个地方:

1、关闭文章下的评论模块

wp-includes/comment-template.php 中,comment_form 方法,

if ( ! comments_open( $post_id ) ) {  ……  改为
if ( ! comments_open( $post_id ) || true ) {  ……

多加了一个”|| true”,这句代码是每篇文章做的是否禁用了评论的判断,如果禁用,执行不显示评论的方法;添加 || true 后,每篇文章都进入了分支,即都作为禁用处理;

2、去掉文章标签中的评论标签;

wp-content/themes/blog-kit-child/inc/template-tags.php

if (!post_password_required() && (comments_open() || get_comments_number())) { ……
改为
if (false && !post_password_required() && (comments_open() || get_comments_number())) { ……

这句代码是判断是否要显示评论标签,添加 false &&,则每篇文章都不显示;

如果这篇文章对你有用,可以点击下面的按钮告诉我

0

发表回复