一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

WORDPRESS请求错误:NAME LOOKUP TIMED OUT

时间:2015-11-09 编辑:简简单单 来源:一聚教程网

问题的起因是本地环境下WordPress后台几处地方页面打开缓慢,甚至没有响应,排除了是谷歌字体或引用第三方ajax导致,打开wp debug,页面提示『发生意外错误,可能WordPress.org或服务器配置文件存在问题』,调试程序返回name lookup timed out报错。


后台比如这两个页面打开的时候巨慢无比:

本地url如:http://www.wp.com/wp-admin/themes.php和http://www.wp.com/wp-admin/plugins.php,当然肯定还有其他页面跟这类似的情况,正常的页面是打开非常快的。

ps:因为最近没事折腾了一个WordPress插件,对WordPress又有研究兴趣了,于是回去在Mac机OS X本地环境(MAMP集成环境)也装了个WordPress,就发现如上说的问题了。

言归正传。于是在PHPstorm和xdebug进行断点调试,找到卡住的地方,原来它会向一个url地址https://api.wordpress.org/plugins/info/1.0/发送请求,但是却半天没有响应,可是ping官网是可以ping通的,而且还有一个在线上运行的WordPress程序后台也是可以正常快速打开的,所以排除是这个url的问题。

api-wordpress-no-response返回的错误有个提示:name lookup timed out.在程序中并没有搜索到这句话,是服务器返回的。

打开WordPress的debug模式,刷新页面,等待半天,会显示:发生意外错误,可能WordPress.org或服务器配置文件存在问题,也就是本文开头说的。对应的程序中的英文是:

An unexpected error occurred. Something may be wrong with WordPress.org or this server…

然后在网上搜索这句话,果然发现很多人遇到这个问题,但都没明确的解决方案,有个网友提到这是因为Linux系统文件夹权限问题,要给wp-includes和wp-contents几个文件夹及子文件夹设置可读可写权限。虽然不太信服,但是还是照做。

在终端使用以下命令修改了文件夹的权限:

chmod-R

chmod-R

chmod -R o+wx wp-content/

其中-R表示递归循环修改该文件及其子文件夹,o表示其他拥有者(other),wx表示可写和可执行权限。

Shell


ls -l
显示该文件夹的所有文件,并显示权限等信息。

改了之后还是不行,后来干脆把整个WordPress目录下的所有文件夹改成所有人(o,g,u)都具有可读可写可执行权限,还是不行。排除这个原因。

看来还是在于name lookup timed out这个错误,上网查了下,说是linux服务器因nameservers停止工作,导致name lookup timed out, 要修改nameserver映射,位于Mac下/private/var/run/resolv.conf文件:


#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
search DHCP HOST
nameserver 192.168.0.1
nameserver 192.168.1.1
加了两个8.8.8.8和8.8.4.4还是不行,这个办法也行不通。

后来在statcoverflow找到了同样的问题,有人提到可能是请求的时候timeout超时时间设置短了,http://stackoverflow.com/questions/21871850/wordpress-update-operation-timed-out-after-5000-milliseconds

I tracked it down to this line in WP_Http_Curl::request()

PHP

 
curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
The function’s default timeout is 5, however WP_Upgrader::upgrade() actually calls the function via a download_package function passing in a 300 seconds timeout.

于是在发出post请求前的代码改超时时间长一点:

timeout

刷新页面竟然一切顺利了。

但是后来还原代码,一切又都是正常的,难道是本地DNS的问题吗?把超时时间改长进行尝试成功后,本地缓存了DNS,于是还原代码后很快就可请求到数据。

默认超时时间5s,假设是7s返回数据,因为5s就自动超时所以之前请求返回失败卡着不动,超时时间改长之后得到了正常返回数据。看来还是本机的DHCP HOST的问题,没有解析成功或者响应慢,连接成功后就缓存了DNS信息。

热门栏目