我在升级Wordpress时遇到了问题,我的谷歌搜索并没有找到解决方案。希望你们能帮上忙。
问题
我正在尝试将运行Wordpress 3.7的网站更新为Wordpress 3.8.1但是在按下“立即更新”按钮时会抛出以下错误。
从https://wordpress.org/wordpress-3.8.1-new-bundled.zip下载更新...
下载失败:操作在5001毫秒后超时,收到6333109字节中的736947
安装失败
额外信息
Plugins > Add New > Popular
上,这也会引发错误:发生意外错误。 WordPress.org或此服务器的配置可能有问题。如果您仍然遇到问题,请尝试支持论坛。
再试一次
答案 0 :(得分:5)
在Wordpress源代码中弄清楚之后,我能够将问题跟踪到名为“More Fields”的插件中的破坏性过滤器。我已经禁用并卸载了插件,升级再次完成。
好奇心的详情
我在WP_Http_Curl::request()
curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
该函数的默认超时为5,但WP_Upgrader::upgrade()
实际上通过传递300秒超时的download_package函数调用该函数。
这里的罪魁祸首是插件“More Fields”,其中包含以下过滤器,它打破了arguments数组,因此重置了默认超时:
// Prevent auto update to this custom plugin
add_filter( 'http_request_args', 'prevent_update_check', 10, 2 );
function prevent_update_check( $r, $url ) {
if ( 0 === strpos( $url, 'http://api.wordpress.org/plugins/update-check/' ) ) {
$my_plugin = plugin_basename( __FILE__ );
$plugins = unserialize( $r['body']['plugins'] );
unset( $plugins->plugins[$my_plugin] );
unset( $plugins->active[array_search( $my_plugin, $plugins->active )] );
$r['body']['plugins'] = serialize( $plugins );
}
return $r;
}
不确定是否故意恶意。它看起来像一个目标过滤器,但在WP_Upgrader中,所有的args都会丢失。