- A+
最近Wordpress官方发布了4.3的中文版,我对于最新的软件或者插件版本向来就有着相当大的乐趣在里面。追求最新鲜的功能体验,说不上来是为什么,或许只是对未知的猎奇心比较强。
觉得上传文件到服务器更新太过于繁琐,所以就点击了“现在更新”按钮。既然人家官方都做了这个功能,何必再自己劳心劳力呢?然后……然后……就没有然后了,系统出现错误提示:没有可以完成请求的HTTP传输器。一开始我以为是网络问题,或许隔一段时间再更新会有更大的希望。
结果,你已经知道了。尝试了三四次,每次都是同一种错误提示,而且屡试不爽。我就纳了闷了,服务器的安全设置也没有严格到不允许请求wordpress.org啊!甚至有一次我还下载了一个版本的更新文件,然后上传到项目目录去覆盖。最后的麻烦事就是,我得把以前目录里改过了页面重新再改一遍,重复性的无意义的劳动让人很憋屈。
于是我就开始在网上冲浪了,查找更新失败的原因。
网络限制问题?
有些网友说,部分地区的机房或者空间由于服务商的网络限制,无法直接更新官方的一些版本或者插件。而这说明有部分原因确实是网络引起的,只能通过手动下载然后上传到空间目录。
PHP的curl模块
但是,这种说法对我完全不适用,因为我们使用的是服务器托管,而且是双线机房。不存在网络限制问题,或者服务运营商的网络安全屏蔽设置。所以那肯定有其他原因,最后我找到了也遇到同种问题的网友说明,原来是php的curl模块。
PHP支持的由Daniel Stenberg创建的libcurl库,允许你与各种的服务器使用各种类型的协议进行连接和通讯。
libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证。
这个是百科的详细说明,curl库就是用来服务器项目的对外连接和通讯。所以没有开启这个模块,对于类似协议的连接和请求均无法实现。而这也解释了更新的时候为什么找不到HTTP传输器。
1 | ;extension=php_curl.dll |
在php.ini中找到这一句话,把前面的分号去掉,就实现了模块开启。重启下apache服务就搞定了。
需要注意的是,wordpress在更新版本或者插件的时候,下载更新往往需要先进行文件缓存。这里就涉及到2个参数配置:
1 2 | max_execution_time=60 //php脚本的最大执行时间,默认60秒,如果觉得文件60s下载不完的话,建议放宽时间限制,0为无限制 post_max_size=8M //post请求下php能接收的文件最大容量,默认为8M,如果文件过大的话建议放宽,0为无限制 |
把这几个参数配置完善,再更新版本应该不会有其他问题了。