WordPress更新失败:Warning: 发生了预料之外的错误


WordPress更新插件或者主题或者升级程序,报以下错误:

Warning: 发生了预料之外的错误。 WordPress.org 或是此服务器的配置可能出了一些问题。如果您持续遇到困难,请试试支持论坛。 (WordPress 无法建立到 WordPress.org 的安全连接,请联系您的服务器管理员。) in C:\dev\project\wordpress\wordpress_obscure\wp-admin\includes\update.php on line 154
正在从 https://downloads.wordpress.org/release/zh_CN/wordpress-6.6.1.zip 下载更新…


Fatal error: Maximum execution time of 300 seconds exceeded in C:\dev\project\wordpress\wordpress_obscure\wp-includes\Requests\src\Transport\Curl.php on line 534
此站点遇到了致命错误,请查看您站点管理员电子邮箱中收到的邮件来获得指引。

出现这种情况,绝大部分是因为网络原因,无法在短时间内获取到WordPress接口返回的数据。

解决办法如下:

修改php执行超时时间:

max_execution_time = 3000

修改WordPress请求链接超时时间,通过过滤器修改,可以把代码放在主题主文件里或者其它插件代码里:

add_filter('http_request_args',function ($parsed_args, $url){
    $parsed_args['timeout'] = 3000;
    return $parsed_args;
},10,2);

修改了php超时时间,为啥要修改WordPress请求链接超时时间?

这是因为WordPress代码里,部分地方设置了超时时间为3秒,如果3秒获取不到返回数据,程序不就无法运行了?

参考文件:wp-admin/includes/translation-install.php

代码: