缘起
一直使用4.2.2wp, 安全问题有一些,需要升级WP,但是自动升级总失败,提示:因为我们不能复制一些文件,升级未被安装。这通常是因为存在不一致的文件权限。: wp-includes/version.php 安装失败
于是只能手动升级了,也想过直接暴力覆盖法,用新版本的某些文件夹及文件直接覆盖运行中的网站相关文件,实践证明是异想天开。还是要先装个新版本,配置好运行起来,然后再用旧版本自定义的部分去覆盖已经可以运行良好的新网站,逐步增量式完成更改,一边及时查看效果。
可是我没有多余的域名,也不想在测试环境中先预演一遍,于是就弄个子目录吧。还是用已有域名/子文件名的方式访问新网站。数据库也新建一个,之前想的共用数据库也是问题多多,把情况弄得很复杂。
其实多站点的问题也是一样,不如多建立几个完全分离的网站,迁移之类也方便。
过程
在我的网站根目录wordpress下放置最新版4.7 wordpress,文件名为wp-latest.
访问http://www.joycelau.net/wp-admin/setup-config.php,完成配置生成一个新网站。DB name:wp-201701
刚进入后台就提示有wp4.7.1更新,好吧,试试能成功自动更新不。
先拷贝SSH SFTP Updater Support插件过来,并激活。
结果安装同样出错,一样的提示:The
update cannot be installed because we will be unable to copy some
files. This is usually due to inconsistent file permissions.:
wp-includes/version.php Installation Failed
检查了一下wp-latest文件夹的权限,是755,改成777并应用到所有子文件。再次更新,结果还是一样。
又每个字仔细看,不一致的权限,不一致!好困惑。不是权限不够,是不一致,正好搜到一贴(http://stackoverflow.com/questions/23253815/wordpress-3-9-upgrade-fails),不完全一样但类似:
I had this same issue today. After searching for hours, one site mentioned:
The wp-cron.php file should have 644 file permissions. If the wp-cron.php file permissions are not 644 then change the file permissions to 644.
I made that change, and the automatic upgrade worked.
把version.php权限改成644试试吧!又一次失败!!!version.php的权限那原本应该是什么?自动解压我又没有改过。不是755,不是644,是什么?继续搜,搜到一篇文章(http://xiedexu.cn/wordpress-permissions.htm)提到一些权限问题:
WordPress安全防范有很多方法,比如利用插件、检查附件、WP核心文件等等,还有WordPress文件及文件夹读写权限也需要检查。
名称 | 标签层级 | 当前权限 | 建议权限 | |
root directory | /alidata1/www/html/xiedexu.cn/ | 0755 | 0755 | |
wp-admin | /alidata1/www/html/xiedexu.cn/wp-admin | 0755 | 0755 | |
wp-content | /alidata1/www/html/xiedexu.cn/wp-content | 0755 | 0755 | |
wp-includes | /alidata1/www/html/xiedexu.cn/wp-includes | 0755 | 0755 | |
.htaccess | /alidata1/www/html/xiedexu.cn/.htaccess | 0644 | 0644 | |
readme.html | /alidata1/www/html/xiedexu.cn/readme.html | 0400 | 0400 | |
wp-config.php | /alidata1/www/html/xiedexu.cn/wp-config.php | 0644 | 0644 | |
wp-admin/index.php | /alidata1/www/html/xiedexu.cn/wp-admin/index.php | 0644 | 0644 |
意外发现
Update WordPress
Downloading update from https://downloads.wordpress.org/release/wordpress-4.7.1-no-content.zip…
原来有个没有content的版本。
在wp-content/upgrade中找到了下载的这个升级包,只有wp-admin和wp-include文件夹,其中也没有任何php页面文件。
WordPress 有个进程专门用来在指定的时间周期或者将来的某个时间点运行特定的任务,比如定时发布某篇日志。这个功能 WordPress 是通过 WP-Cron 实现的,它会在每次你的博客有人访问或者在后台工作的时候,都会去检查当前是否有任务要执行。这样可能会引起一些问题:
- 增加服务器加载时间,特别是网站访问用户特别多的时候。
- 而网站的访问用户很少或者加载了静态缓存插件,指定的任务可能又不运行。
所以最好不要让 WordPress 在后台执行 WP-Cron,而是使用服务器的真正的定时 Cron 功能来执行。
可以通过在 wp-config.php
添加下面的代码禁用 WP-Cron:
/* Disable background wp-cron */
define('DISABLE_WP_CRON', true);