You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

XAMPP+Windows10调用Stripe API遇网络错误(errno26)求助

排查Windows 10 + XAMPP环境下Stripe网络错误(errno 26)的方案

针对你遇到的Stripe通信错误(网络错误[errno 26]),结合Windows 10和XAMPP的环境特性,咱们可以从以下几个方向逐步排查:

1. 检查PHP cURL的CA证书配置

Stripe的API要求严格的SSL证书验证,而Windows下的XAMPP默认可能未正确配置CA证书路径,这是引发这类网络错误的常见原因:

  • 打开XAMPP控制面板,点击Config -> PHP (php.ini),找到curl.cainfo配置项
  • 确保该项指向有效的CA证书文件,比如:
    curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
    
  • 如果没有cacert.pem文件,下载最新的CA证书包(可从Mozilla官方获取),放到xampp/php/extras/ssl/目录下
  • 同时确认extension=curl没有被注释(前面没有;),保存php.ini后重启XAMPP的Apache服务

2. 验证图片文件路径与权限

你代码中使用相对路径../images/3.jpg,如果路径错误或PHP没有读取权限,fopen失败会间接导致Stripe请求出错:

  • 先确认图片文件确实存在于对应路径:比如你的PHP脚本在htdocs/payment/,那么../images/就是htdocs/images/,检查这个位置是否有3.jpg
  • 可以在代码中添加文件存在性检查:
    $imagePath = '../images/3.jpg';
    if (!file_exists($imagePath) || !is_readable($imagePath)) {
        die("错误:无法读取图片文件,请检查路径或文件权限");
    }
    $fileHandle = fopen($imagePath, 'r');
    

3. 更新Stripe PHP库到最新版本

旧版本的Stripe库可能对TLS 1.2的支持不完善,建议升级到最新版:

  • 如果用Composer管理依赖,在项目根目录执行:
    composer update stripe/stripe-php
    
  • 如果是手动下载的库,替换为Stripe官方提供的最新版本,确保库文件没有损坏

4. 排查Windows防火墙与代理设置

Windows系统的防火墙或代理可能阻止了XAMPP进程访问Stripe API:

  • 临时关闭Windows Defender防火墙测试,如果错误消失,说明需要在防火墙中添加允许httpd.exe(XAMPP Apache)和php.exe访问网络的规则
  • 如果你使用代理服务器,需要在PHP中配置代理:
    \Stripe\Stripe::setApiKey('你的Secret Key');
    // 添加代理配置
    \Stripe\Stripe::setHttpClient(new \Stripe\HttpClient\CurlClient([
        'proxy' => 'http://你的代理地址:端口',
    ]));
    

5. 测试基础网络连通性

先排除系统级的网络问题:

  • 打开XAMPP的Shell工具,执行:
    curl https://api.stripe.com/v1/charges
    
    如果curl命令返回SSL错误或无法连接,说明是系统网络配置问题,而非代码问题
  • 也可以用PHP脚本测试cURL连通性:
    $ch = curl_init("https://api.stripe.com");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    $errorMsg = curl_error($ch);
    curl_close($ch);
    
    echo "响应内容:" . $response . "<br>";
    echo "cURL错误:" . $errorMsg;
    
    这个脚本能帮你快速定位是cURL本身的问题还是Stripe库的问题

6. 确认Stripe账户与密钥正确性

最后再核对基础配置:

  • 确保使用的是Secret Key(而非Publishable Key),并且密钥对应环境(测试/生产)正确
  • 检查stripe_account参数中的acct_xxx是正确的关联账户ID,没有拼写错误
  • 确认你的Stripe账户处于激活状态,没有被限制访问API

内容的提问来源于stack exchange,提问作者Saurabh Yadav

火山引擎 最新活动