1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

WordPress自动升级失败应对措施

本帖由 盖世太保2011-05-17 发布。版面名称:源码讨论

  1. 盖世太保

    盖世太保 New Member

    注册:
    2011-04-08
    帖子:
    872
    赞:
    0
    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文1.76合击传奇件添加上面的内容然后重启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.p轻变传奇私服hp文件中”That’s all, stop editing! Happy blogging.”的上方。别忘了把代码里的用户名、密码等变量换成自己的信息。

    可能你觉得上面这些操作有些麻烦,不过WordPress自动升级为我们节省了如此多的时间,完全值得我们多花一点时间来解决自动升级遇到的问题,成功实现事半功倍的效果。
    http://www.bjsf.net.cn