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

Debian9 Apache2环境下PHP调用file_get_contents请求Trello API返回426错误如何解决?

问题根因

报错HTTP/1.1 426 Upgrade Required的核心原因是Trello API要求请求必须使用HTTP/1.1及以上协议版本、TLS1.2及以上加密协议,而Debian9源自带的PHP7默认配置下,file_get_contents发起请求时默认使用HTTP/1.0协议,TLS版本也可能不满足要求,因此触发接口拒绝。你本地XAMPP环境没有问题是因为XAMPP自带的PHP版本已经默认配置了高版本HTTP、TLS作为请求默认参数。


解决方案

方案1:修改file_get_contents请求配置,添加自定义流上下文

在原有代码基础上添加上下文配置,强制指定协议版本即可:

// 构造请求上下文配置
$opts = [
    'http' => [
        'method' => 'GET',
        'protocol_version' => 1.1, // 强制使用HTTP/1.1协议
        'header' => [
            'Connection: close' // 单请求关闭长连接,避免资源占用
        ]
    ],
    'ssl' => [
        'verify_peer' => true,
        'verify_peer_name' => true,
        'min_ssl_version' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT // 强制使用TLS1.2及以上版本
    ]
];
$context = stream_context_create($opts);

// 携带上下文发起请求
$lists = json_decode(file_get_contents("https://api.trello.com/1/boards/<<HIDDEN>>/lists?key={$id}&token={$token}", false, $context), true);

方案2:换用cURL发起请求(更稳定,推荐)

cURL的兼容性、可配置性优于file_get_contents,是调用外部API的首选方案:

  1. 首先安装PHP cURL扩展,Debian9下执行命令:
# 请将7.0替换为你实际安装的PHP大版本号,如7.2则改为php7.2-curl
apt update && apt install -y php7.0-curl
# 安装完成后重启Apache生效
systemctl restart apache2
  1. 替换原有代码为cURL实现:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.trello.com/1/boards/<<HIDDEN>>/lists?key={$id}&token={$token}");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);

$response = curl_exec($ch);
if (curl_errno($ch)) {
    // 自行补充错误处理逻辑
    $error_msg = curl_error($ch);
}
curl_close($ch);

$lists = json_decode($response, true);

内容的提问来源于stack exchange,提问作者Christopher Chauve

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 02:54:02