如何解决laravel 5.5中Dusk在生产环境中运行不安全的异常?

10

我将我的项目从laravel 5.4升级到laravel 5.5,

在本地环境中没有任何问题,但在服务器上我遇到了这个异常,

我搜索了很多资料,并且知道这个问题可能是重复的,但没有解决我的问题!

当环境是生产环境时,如何不注册dusk?

我在AppServiceProvider.php中编写了以下代码:

public function register()
{
    // Dusk, if env is appropriate
    if ($this->app->environment('local', 'testing')) {
        $this->app->register(DuskServiceProvider::class);
    }
}

但似乎它不起作用了。 有人能帮忙吗?

编辑: 我的composer.json文件:

 "require-dev": {
    "filp/whoops": "~2.0",
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "1.*",
    "phpunit/phpunit": "^7.0.3",
    "symfony/css-selector": "4.0.*",
    "symfony/dom-crawler": "4.0.0",
    "barryvdh/laravel-ide-helper": "^2.4",
    "laravel/dusk": "^2.0"
  },

例外情况是:

Exception
It is unsafe to run Dusk in production.

请问您能否在您的问题中添加异常信息? - CUGreen
composer.json 中 require-dev 部分需要安装 dusk 包吗? - Chaoyenpo
是的,它在require-dev中。但我不想使用composer install --no-dev @Chaoyenpo。 - Samira kalantari
已添加到问题中。@CUGreen - Samira kalantari
4个回答

29
在 Laravel 5.5 中,包会自动被发现和加载,因此您可能需要告诉它不要加载 dusk。一种方法是将以下内容添加到您的 composer.json 文件中:
"extra": {
    "laravel": {
        "dont-discover": [
            "laravel/dusk"
        ]
    }
},

此外,您可以将其添加到开发依赖项中,并在部署到生产环境时使用:

composer install --no-dev

Taylor写了一篇关于这个的文章这里.


这种方式可以工作,但我无法在Travis CI上使用Dusk进行测试。 因为TravisCI每次都会安装所有的composer包,所以如果dusk在“dont-discover”中,它就找不到它。 - Davide Casiraghi

6

看,它不起作用是因为它配置为在 localtesting 环境下运行。我猜你需要添加 'production'(如果你的生产环境被称为 'production' 在你的 .env 文件中):

AppServiceProvider

public function register()
{
    // Dusk, if env is appropriate
    if ($this->app->environment('local', 'testing', 'production')) {
        $this->app->register(DuskServiceProvider::class);
    }
}

在将程序安装到生产服务器时,我只需要使用 --no-dev 标志。
composer install --no-dev

祝你好运!


现在看,我改进了答案。 - Adam Kozlowski
谢谢,但有没有不运行它的方法?没有其他解决方案吗? - Samira kalantari
我进行了研究 - 只有一个解决方案。 - Adam Kozlowski
这是哪个注册方法?Laravel 中有很多 register() 方法,请帮我找到这个。 - Eugene van der Merwe
在AppServiceProvider中完成它。 - Adam Kozlowski

1

1

检查源文件夹中是否包含名为.env的文件,并设置数据库用户名、密码和其他设置。

我曾经遇到过同样的问题,因为我已经设置了所有的东西,但忘记将.env.example更改为.env


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接