【问题标题】:Laravel php artisan serve dose not respect env flag [closed]Laravel php artisan serve 不尊重 env 标志 [关闭]
【发布时间】:2020-12-12 10:50:31
【问题描述】:

我正在开发一个 Laravel 项目并尝试集成 Laravel Scout。为了测试黄昏,我创建了一个 .env.dusk.local 环境文件,用于测试。但是当我尝试运行php artisan serve --env=dusk.local 时,它只会运行默认的 .env 文件。所有其他 .env 文件也不起作用。

我正在使用 Laravel 8.15.0。 我也尝试清除配置缓存,但没有任何改变。

我目前没有想法,所以希望有人可以帮助我。

【问题讨论】:

    标签: php laravel testing laravel-dusk


    【解决方案1】:

    如果你看到 laravel 黄昏文档,你会发现你没有必要让你单独的黄昏 env 文件替换原始文件,一旦测试完成,它会自动恢复。

    运行测试时,Dusk 会备份您的 .env 文件并将您的 Dusk 环境重命名为 .env。测试完成后,您的 .env 文件将被恢复。


    如果还是不行

    感谢vlucas/phpdotenv的方法'load()',您可以手动设置环境,

    <?php
    
    namespace Tests\Browser;
    
    use App\Models\User;
    use Laravel\Dusk\Chrome;
    use Tests\DuskTestCase;
    
    class ExampleTest extends DuskTestCase
    {
        private function setEnv(){
           $env_name = "dusk.local";
           if (isset($env_name)) {
                // Immutability refers to if Dotenv is allowed to overwrite existing environment variables. If you want Dotenv to overwrite existing environment variables, use createMutable instead of createImmutable(from vlucas/phpdotenv repo)
                $dotenv = \Dotenv\Dotenv::createImmutable(base_path(), '.env.'.$env_name);
        
                try {
                    $dotenv->load();
                } catch (\Dotenv\Exception\InvalidPathException $e) {
                    $e->getTraceAsString();
                }
            }
        }
        public function testBasicExample()
        {
            $this->setEnv();
        }
    }
    

    【讨论】:

    • 谢谢。我测试了一下,我发现我所有的其他测试也都失败了,因为望远镜失败了,即使我禁用了望远镜,我也得到了这个错误。所以我从引导配置文件中删除了望远镜并重新安装了它。现在它以正确的方式工作。
    猜你喜欢
    • 2019-08-12
    • 2016-03-09
    • 2018-02-22
    • 2019-08-01
    • 1970-01-01
    • 2013-10-09
    • 2021-04-09
    • 2014-01-30
    • 2019-08-12
    相关资源
    最近更新 更多