Reputation: 2683
I have a small console command where I'd like to read some environment variables, but it does not seem to read the vars from the .env
file or the server configs in the console (php file works)
The code
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;
...
}
Commands to test
php bin/console app:make-backup
Output:
Starting upload
false
false
php bin/console app:make-backup --env=prod
Output:
Starting upload
"prod"
false
php bin/console app:make-backup --env=dev
Output:
Starting upload
"dev"
false
.env File
APP_ENV=dev
[email protected]
I don't see where I am doing wrong? Issue exists on nginx and apache server, BUT using getenv('MAILER_USERNAME')
in any php-file works.
Upvotes: 2
Views: 7775
Reputation: 48865
I think your best bet would be to go ahead and inject the env variables. Trying to access them directly can be a bit tricky.
# 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));
}
}
Upvotes: 6