You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地WordPress插件开发遇WP_Error:cURL error 28超时问题求助

解决WordPress本地环境wp_remote_get/post的cURL error 28超时问题

cURL error 28本质是请求超时,本地环境下通常和网络连通性、服务器配置或请求参数有关,以下是针对性的解决步骤:

1. 先确认目标URL的可访问性

  • 对于外部API(self::$api):直接用浏览器或curl命令访问拼接后的$endpoint,看是否能正常返回数据。如果外部API本身不可达,问题不在本地代码。
  • 对于本地REST API(/wp-json/lmfwc/v2/licenses):直接在浏览器打开$licenses_url,检查是否能返回JSON数据。如果打不开,先排查本地WordPress的REST API是否正常(比如 permalink 设置是否正确、相关插件是否冲突)。

2. 调高超时时间

本地环境资源占用高或网络延迟大时,10秒的超时时间可能不够,建议调整为30秒,并单独设置连接超时:

  • 在请求参数里增加'connect_timeout' => 15,(WP 5.6+支持),区分连接超时和响应超时。

3. 修复本地域名解析问题

如果本地用自定义域名(如local.yoursite.com),可能存在解析延迟,改用127.0.0.1代替域名:

// 替换原来的get_site_url()
$baseUrl = 'http://127.0.0.1/your-local-site-folder';

4. 检查cURL扩展和服务器配置

  • 确认PHP的cURL扩展已启用:创建phpinfo文件,搜索curl模块,确保状态为已启用。
  • 暂时关闭本地防火墙/杀毒软件:这类工具可能拦截WordPress的出站请求,测试关闭后是否恢复正常。

5. 优化请求代码

修改后的Dashboard文件代码

$endpoint = add_query_arg(
    array(
        'code' => $purchase,
    ),
    self::$api
);

$options = [
    'body'            => wp_json_encode( array( 'code' => $purchase ) ),
    'method'          => 'POST',
    'headers'         => [ 'Content-Type' => 'application/json' ],
    'timeout'         => 30, // 延长超时时间
    'connect_timeout' => 15, // 单独设置连接超时
    'redirection'     => 5,
    'blocking'        => true,
    'httpversion'     => '1.1', // 改用HTTP/1.1提升兼容性
    'sslverify'       => false,
];

$remote_test = wp_remote_post( $endpoint, $options );

// 增加错误日志便于调试
if ( is_wp_error( $remote_test ) ) {
    error_log( 'POST请求失败: ' . $remote_test->get_error_message() );
}

修改后的Verification文件代码

$baseUrl = 'http://127.0.0.1/your-local-site-path'; 
$args = array(
    'timeout'         => 30,
    'connect_timeout' => 15,
    'sslverify'       => false,
);

// 用add_query_arg拼接参数更规范
$licenses_url = add_query_arg(
    array(
        'consumer_key'    => 'ck_a50c1db92c5e5aa63d4',
        'consumer_secret' => 'cs_2b3e19c'
    ),
    $baseUrl . '/wp-json/lmfwc/v2/licenses'
);
$response = wp_remote_get( $licenses_url, $args );

// 增加错误日志便于调试
if ( is_wp_error( $response ) ) {
    error_log( 'GET请求失败: ' . $response->get_error_message() );
}

6. 排查代理问题

如果本地使用代理服务器,需要在wp-config.php中添加代理配置:

define('WP_PROXY_HOST', 'your-proxy-ip');
define('WP_PROXY_PORT', 'your-proxy-port');
define('WP_PROXY_BYPASS_HOSTS', 'localhost,127.0.0.1');

内容的提问来源于stack exchange,提问作者pooyan golkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 16:05:39