如何在Laravel控制台命令中加载自定义.env文件?
我有以下控制台命令代码:如何在Laravel控制台命令中加载自定义.env文件?,laravel,laravel-environment,laravel-console,Laravel,Laravel Environment,Laravel Console,我有以下控制台命令代码: class MyCommand扩展命令 { 受保护的$signature='custom:mycommand{domain}'; // ... 公共函数句柄() { $domain=$this->argument('domain'); //读取基于域的.env文件,如:.env.example.com $dotenv=\dotenv\dotenv::createImmutable(base_path(),“.env.”.$domain); $dotenv->load()
class MyCommand扩展命令
{
受保护的$signature='custom:mycommand{domain}';
// ...
公共函数句柄()
{
$domain=$this->argument('domain');
//读取基于域的.env文件,如:.env.example.com
$dotenv=\dotenv\dotenv::createImmutable(base_path(),“.env.”.$domain);
$dotenv->load();
dd(环境(“应用程序URL”);
// ...
返回0;
}
}
在dd()
行中,它应该打印我作为参数给出的域(来自.env.example.com
),但仍然打印.env
文件中的数据
否则,此函数在AppServiceProvider
中使用此代码时运行良好:
$host=request()->getHost();
//读取基于域的.env文件,如:.env.example.com
$dotenv=\dotenv\dotenv::createImmutable(base_path(),'.env.'.$host);
$dotenv->load();
知道如何在console命令中使其工作吗?不变性是指是否允许Dotenv覆盖现有的环境变量。
如果希望Dotenv覆盖现有环境变量,请改用asMutable 我就是这样用的
$env_name = $this->argument('env_name');
if(!empty($env_name) && is_string($env_name)){
$dotenv = \Dotenv\Dotenv::createMutable(base_path(), $env_name);
try{
$dotenv->load();
$this->info(env('NAME'));
$this->info('The Dotenv was loaded successfully!');
} catch(\Dotenv\Exception\InvalidPathException $e){
$this->error($e->getTraceAsString());
}
}
您是否尝试过('.env.example.com');其中
$app
是您的Laravel应用程序。是的,也没有成功\Dotenv\Dotenv::createMutable
是解决方案!谢谢!