gpt4 book ai didi

php - Symfony 4 控制台命令不读取环境变量

转载 作者:行者123 更新时间:2023-12-02 00:14:35 25 4
gpt4 key购买 nike

我有一个小的控制台命令,我想在其中读取一些环境变量,但它似乎没有从 .env 文件或控制台中的服务器配置中读取变量(php文件作品)

代码

protected function execute(InputInterface $input, OutputInterface $output)
{
$io = new SymfonyStyle($input, $output);
$debug = $input->getArgument('debug') === 'y' ? true : false;
$this->project = $input->getArgument('project');

$start = new DateTime();

$debug ? $io->text('<fg=green>Starting upload</>') : null;
dump(getenv('APP_ENV'));
dump(getenv('MAILER_USERNAME'));
die;
...
}

要测试的命令

php bin/console app:make-backup

输出:

Starting upload
false
false

php bin/console app:make-backup --env=prod

输出:

Starting upload
"prod"
false

php bin/console app:make-backup --env=dev

输出:

Starting upload
"dev"
false

.env 文件

APP_ENV=dev
MAILER_USERNAME=info@xxx.com

我不明白我哪里做错了吗? nginx 和 apache 服务器上存在问题,但在任何 php 文件中使用 getenv('MAILER_USERNAME') 都可以。

最佳答案

我认为您最好的选择是继续注入(inject)环境变量。尝试直接访问它们可能有点棘手。

# config/services.yaml
services:
App\Command\MyCommand:
$appEnv: '%env(APP_ENV)%'
$mailerUsername: '%env(MAILER_USERNAME)%'

# src\Command\MyCommand
class MyCommand extends Command {
protected static $defaultName = 'app:mine';

private $appEnv;
private $mailerUsername;

public function __construct($appEnv,$mailerUsername) {
parent::__construct();
$this->appEnv = $appEnv;
$this->mailerUsername = $mailerUsername;
}
protected function execute(InputInterface $input, OutputInterface $output) {
$output->writeln(("My Command " . $this->appEnv . " " . $this->mailerUsername));
}
}

关于php - Symfony 4 控制台命令不读取环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com