stripe php 示例返回 TypeError: Argument 1 passed to Dotenv\Dotenv::create() must be an instance of Dotenv\Repository\RepositoryInterface

问题描述 投票:0回答:1

当我尝试使用此处的示例https://github.com/stripe-samples/subscription-use-cases我收到错误: PHP致命错误:Uncaught TypeError: Argument 1 passed to Dotenv\Dotenv::create() must be an instance of Dotenv\Repository\RepositoryInterface, string given, called in homedir/subscription-use-cases/server/index.php 在线7 并在 homedir/subscription-use-cases/server/vendor/vlucas/phpdotenv/src/Dotenv.php:83 中定义

在线抛出错误

$dotenv = Dotenv\Dotenv::create(__DIR__);

index.php文件代码为原创,未经本人修改:

use Slim\Http\Request;
use Slim\Http\Response;
use Stripe\Stripe;
require 'vendor/autoload.php';
$dotenv = Dotenv\Dotenv::create(__DIR__);

我尝试通过 stripe CLI 和手动安装两种方式。每次安装都成功。在这两种情况下,我都遇到了同样的错误。

php stripe-payments slim
1个回答
0
投票

看起来github的dependabot变高了改变了

vlucas/phpdotenv
的依赖从
^3.4
^5.4
。问题是在 4.0 版中,随着
Dotenv::create()
方法的签名被更改,您应该改用
createMutable()
createImmutable()
方法。

composer.json

中更改以下行
"vlucas/phpdotenv": "^5.4",

回到

"vlucas/phpdotenv": "^3.4",

然后运行

composer update
。那应该安装与示例兼容的包版本。

重要提示

仅将此方法用于学习/测试示例。对于项目中的实际实施,您应该使用最新版本的包并更新代码以反映更改。

© www.soinside.com 2019 - 2024. All rights reserved.