Deployer 7 发行版使用 dotenv 变量

Deployer 7 distribution use dotenv variables

问题

在 Symfony 6 应用程序中使用部署程序要求我从 deployer/deployer 更改为 deployer/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 文件加载环境变量的可能解决方案(或替代方案)是什么?

dist版本在phar包中包含自己的依赖(和it does not depend on dotenv),而deployer版本使用你项目自己的依赖。由于您的项目很可能使用 dotenv 组件,因此您可以在部署脚本中使用它。

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

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