这两天WordPress后台提示我更新3.5版本,像往常一样,我仍是准备通过在线的方式更新,结果试了N次,每次都提示升级失败,出现如下错误:
无法安装这个包。: PCLZIP_ERR_BAD_FORMAT (-10) : Unable to find End of Central Dir Record signature
经过分析,由于更新包的源在国外服务器,而本站服务器在国内,所以在线更新时的下载速度就比较慢(有时可能因为国际网络连接抽风,下载甚至将直接中断),又由于这次是程序升级而不是普通的模板或者插件升级,压缩包较大(像这次的包接近7M大小),所以在达到了等待时间上限后,升级程序提前终止了下载并开始解包。因为文件不完整,解包当然就会失败,所以就出现了上述错误。
按照一般的解决方法,我们需要手动下载升级包进行人工升级,而参照了WordPress的升级说明后,我发现其远比在线更新麻烦的多(WordPress正以在线更新方便、快捷为一大亮点),所以我就试图寻找一种更方便的方法解决这个问题。
在分析了在线更新的流程和方式后,我发现每次升级时,WordPress会将下载的包在网站目录的wp-content文件夹里,以wordpress-3.tmp作为文件名(根据升级内容和需要更新的版本等因素的不同,该文件名可能会有所变化,不过应该都是以.tmp作为文件后缀的),所以我灵机一动,在下载开始前将手动下载下来的压缩包上传到该目录,然后等在线更新开始后删除.tmp文件,并将上传好的压缩包更名为wordpress-3.tmp。等待几分钟后(目的是为了让更新程序触发等待时间上限从而开始第二步),便可看到升级程序开始解包并安装更新了。
最后要说的是,这个解决方法同样适用于在线下载、更新模板和插件时出现这个错误的情况。如果你遇到了上述问题,不必急着去手动操作,不妨试试这种方法,绕过下载步骤,达到自动更新的效果。