自从(我相信!)我在本地Mac OS机器上用brew将PHP版本从7.0切换到7.2以来,我在本地主机上安装的Wordpress reporting cURL error 28(timeout)都遇到了麻烦。查看本地站点的任何管理区域或使用WP CLI,WP更新检查和其他cURL调用会导致cURL请求失败:
警告:发生意外错误。WordPress可能有问题。org或此服务器的配置。如果您仍然有问题,请尝试支持论坛。(WordPress无法建立到WordPress.org的安全连接。请与服务器管理员联系。)在/Users/../wp中包含/update。php在线xxx
(xxx行因安装、本地https站点或非本地https站点等而异,但总是归结为一行捕获curl错误)
据我所知,PHP正在使用brew安装的cURL,cURL可以在CLI和PHP中工作,例如,在主题函数中显式运行它。php工作并返回预期结果(更新的JSON):
$ch = curl_init("http://api.wordpress.org/core/version-check/1.7/");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
var_dump("exec", curl_exec($ch));
var_dump("error", curl_error($ch));
curl_close($ch);
同样,只需在终端上获取cURL请求也可以:curl -v http://api.wordpress.org/core/version-check/1.7/
两者都返回相同的JSON。我试图编辑我的WP/wp-includes/
各种http、request和cURL相关的类来调试正在发生的事情。因为功能。php的cURL可以工作,但WP的内部不能,我假设我的php cURL本身可以工作。
在里面/wp-includes/Requests/Transports/cURL.php
我已经试着评论了很多curl_setopt
调用尽可能接近在我的函数中工作的最小cURL调用。php,但运气不好,而且我也不知道如何查看请求的确切cURL设置。curl_getinfo
显示的大多是空值或默认值,就像我对从未成功的请求所期望的那样。
我试过并检查过的其他事情:
安装健康检查插件以确认:是,REST API失败,连接到Wordpress。org失败,环回请求失败:禁用的插件和;themes,no plugins,fresh WP install,phpinfo()告诉我cURL已启用(v7.64.0)
非常非常感谢您提供的任何帮助或建议。
编辑:仅供参考,stackoverflow上也有相同的问题:https://stackoverflow.com/questions/54906545/how-to-set-or-circumvent-curlopt-connecttimeout-in-php-globally