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

使用Stripe订阅示例报Dotenv::create()类型错误求助

解决PHP Dotenv::create()参数类型不匹配的致命错误

错误原因

你遇到的是phpdotenv版本兼容性问题:Stripe订阅示例代码基于phpdotenv v3/v4版本编写,但你当前安装的是v5+版本。v5+版本的Dotenv::create()方法参数要求已变更,不再接受字符串路径(如__DIR__),而是必须传入Dotenv\Repository\RepositoryInterface实例,因此触发类型错误。

解决方案

方法1:降级phpdotenv到兼容版本

  1. 打开项目server目录下的composer.json文件,找到vlucas/phpdotenv依赖项,将版本修改为^4.0:
    "vlucas/phpdotenv": "^4.0"
    
  2. 在项目根目录执行Composer更新命令:
    composer update vlucas/phpdotenv
    
    执行完成后,原示例代码即可正常运行。

方法2:修改代码适配phpdotenv v5+版本

直接调整index.php中的Dotenv初始化代码,替换为v5+版本支持的写法:

use Slim\Http\Request;
use Slim\Http\Response;
use Stripe\Stripe;
require 'vendor/autoload.php';

// 替换原create方法调用为以下写法之一
// 写法1:快速兼容(无需额外引入类)
$dotenv = Dotenv\Dotenv::createUnsafeImmutable(__DIR__);
// 写法2:标准仓库实例写法(更规范)
// use Dotenv\Repository\RepositoryBuilder;
// $repository = RepositoryBuilder::createWithDefaultAdapters()->make();
// $dotenv = Dotenv\Dotenv::create($repository, __DIR__);

// 记得加载.env文件(示例代码中可能遗漏,需补充)
$dotenv->load();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:32:05