WordPress版本更新非常频繁。这个月WordPress 3.2的Beta 1版本已经发布,如果不出意外,下个月我们会迎来3.2正式版。如果你可以从后台管理面板升级,更新到WordPress新版本不是难事:你只需要登录、点击若干个按钮、等上几分钟然后就升级成功了。不过WordPress自动升级带来的不只是方便,你也有可能遇到升级失败的问题。如果自动升级没有成功,你没法像在WORD里一样撤销之前的操作,下面我们就来说说怎么在自动升级失败后恢复网站并确保成功升级。
如果自动升级失败......
在后台点击自动升级(假设从WordPress 3.1.0升级到3.1.1)后,升级界面会出现如下信息:
- 从http://wordpress.org/wordpress-3.1.1.zip…下载更新
- 解压更新
- 验证解压文件...
- 安装最新版本...
一直到这里都很正常,但是之后有可能会出现两种情况,一种是升级成功,另一种就是今天要讨论到的升级失败:
“Installation Failed(安装失败)”前的状态信息解释了WordPress认为的升级失败原因所在,有时候系统可能不显示任何状态信息。无论在哪种情况下,这时用户已经失去对网站的控制权了。自动升级失败后,加载任何网站页面——后台、首页、登录页等——都只能看到类似这样的WordPress维护页面:
在无法登入网站管理界面的情况下,要解决问题真是件让人沮丧的麻烦事。幸好这时候不登入后台也可以把网站找回来。登入FTP,进入根目录,删除.maintenance文件。文件名的开始部分是一个点,如果你没有用FTP找到这个文件,可以试试登入服务器的控制板,然后通过文件管理器找到这个文件并删除。下面是.maintenance文件在根安装目录下的显示截图:
.maintenance文件包含一个wp_maintenance函数使用的变量,类似于:
<?php $upgrading = 1302115706; ?>
如果你被自己的网站拒之门外了,删除.maintenance文件可以让你回到管理后台以及网站的其他页面。当你回到后台后,WordPress会提醒你最近更新失败并显示如下信息:
这时候你有(至少)两个选择:继续尝试自动升级,或者下载最新版本并手动上传。即使你这一次选择了手动升级,最好也了解一下怎么解决自动升级失败问题。
检查文件权限
正确的文件权限是成功完成任何自动程序的关键所在。WordPress手册在介绍后台升级子菜单时,在其中的疑难解决部分建议到:确保你的WordPress目录由Apache服务器的用户名所有。
除此之外,你可能还需要更改/upgrade/目录权限。从下面的截图中可以看到,WordPress用/upgrade/目录存储升级过程中的临时文件。
对需要新建的临时WordPress文件来说,/upgrade/目录应是服务器可写入的。为确定这是否问题所在,可以试着把目录权限改为 777(或CHMOD等值),然后重试自动升级。如果升级成功,问题就解决了,但从此你需要一直使用可能的最高权限。这需要你去研究、尝试或者咨询主机提供商,但了解最高权限之后,你就可以安心地自动升级了。
关闭安全模式
禁用安全模式有可能让你的自动升级重新奏效。根据PHP手册,PHP 5.3.0开始不再采用安全模式。
我们可以通过多种方式关闭安全模式。如果你不能通过服务器的控制台关闭安全模式,可以在php.ini文件里加上下面的代码实现安全模式禁用:
safe_mode = Off
或者你也可以在Apache配置文件里加上下面的代码:
<Directory /var/www/public> php_admin_flag safe_mode off </Directory>
只要在httpd.conf文件添加上面的内容然后重启Apache即可。
在wp-config.php文件内定义FTP变量
在你的wp-config.php文件里定义必需变量,是让自动升级重新工作的又一个方法。这种方法有很多不同形式,所以你需要根据以往的经验根据自己的具体情况进行定义。下面是一个示例,仅供参考:
define('FS_CHMOD_FILE', 0755); define('FS_CHMOD_DIR', 0755); define('FS_METHOD', 'ftpext'); define('FTP_BASE', '/httpdocs/'); define('FTP_CONTENT_DIR', '/httpdocs/wp-content/'); define('FTP_PLUGIN_DIR ', '/httpdocs/wp-content/plugins/'); define('FTP_USER', 'username'); define('FTP_PASS', 'password'); define('FTP_HOST', '123.456.789'); define('FTP_SSL', false);
把上面的代码贴入wp-config.php文件中”That’s all, stop editing! Happy blogging.”的上方。别忘了把代码里的用户名、密码等变量换成自己的信息。
可能你觉得上面这些操作有些麻烦,不过WordPress自动升级为我们节省了如此多的时间,完全值得我们多花一点时间来解决自动升级遇到的问题,成功实现事半功倍的效果。
翻译原文:http://www.wordpress.la/deal-with-auto-upgrade-failture.html英文原文:http://digwp.com/2011/04/wordpress-auto-updates/