当我尝试使用此处的示例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 和手动安装两种方式。每次安装都成功。在这两种情况下,我都遇到了同样的错误。
看起来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
。那应该安装与示例兼容的包版本。
重要提示
仅将此方法用于学习/测试示例。对于项目中的实际实施,您应该使用最新版本的包并更新代码以反映更改。