0

问题

在 Symfony 6 应用程序中使用部署程序需要我从更改deployer/deployerdeployer/dist( 7.0.0-rc.3),缺点是我不能.env再像以前那样从我的环境变量加载。

情况

我有deployer/deployer以下示例在部署脚本中使用 dotenv 变量:

<?php

namespace Deployer;

use Symfony\Component\Dotenv\Dotenv;

require 'recipe/common.php';
require 'contrib/discord.php';

$dotenv = new Dotenv();
$dotenv->loadEnv(__DIR__ . '/.env');

set('application', $_ENV['APP_NAME']);
set('discord_channel', $_ENV['DISCORD_DEPLOY_CHANNEL']);
set('discord_token', $_ENV['DISCORD_DEPLOY_TOKEN']);

但是deployer/dist我不能再这样做了,给出错误信息:

Class "Symfony\Component\Dotenv\Dotenv" not found

有人可以首先解释为什么它不再起作用了吗?.env其次,从我的文件中加载环境变量的可能解决方案(或替代方案)是什么?

4

1 回答 1

1

dist版本在 phar 包中包含它自己的依赖项(并且它不依赖于dotenv),而该deployer版本使用您的项目自己的依赖项。由于您的项目很可能使用该dotenv组件,因此您可以在部署脚本中使用它。

但是由于您使用的是 symfony 6,因此您无法安装 deployer 7,因为它依赖于 symfony 5,从而导致与您的项目发生冲突。

这有点麻烦,但是您可以分叉包以添加dotenv依赖项并使用提供的bin/build脚本构建您自己的 phar,然后手动将其复制到您的项目中。

于 2022-02-05T14:02:33.223 回答