阻止 artisan 询问“你真的想运行这个命令吗?”

问题描述 投票:0回答:3

我是 Laravel 4 的新手,在我的本地主机中运行它。我想知道如何让 artisan 在每次执行迁移命令时跳过询问

Do you really wish to run this command?
的问题?我只想立即执行命令而不输入
y
。并且也无需在迁移命令末尾添加
--force

我知道提示在制作中非常重要,但我发现它有点烦人,尤其是当你在教程中时。我只是想关掉它以使生活更轻松。

任何帮助将不胜感激。

laravel laravel-4 command-line laravel-artisan artisan-migrate
3个回答
4
投票

如果您将环境设置为local,您将不会收到警告问题,因为只有当 Laravel 检测到您处于生产时才会显示警告问题,错误地运行迁移可能会很危险。您只需在

bootstrap/start.php
文件中添加以下内容即可:

$env = $app->detectEnvironment(array(
    // The array value should be your hostname
    'local' => array('your-machine-name'),
));

上面的内容将允许 Laravel 在检测到您的计算机主机名与您指定的主机名匹配时将环境设置为 local,从而避免显示该消息。


有关配置环境以及从中获得的优势的更多信息,请阅读 Laravel 环境配置文档


1
投票

为博格丹的回答和评论添加更多内容。

如果您不熟悉 Laravel 中环境的概念,它可以指定特定于您的应用程序运行环境的不同配置。例如,您的本地环境中将拥有与实时服务器(生产环境)不同的数据库凭据.

因此,您不应该使用

'local' => array(gethostname())
的原因之一是,无论您在何处运行(本地计算机、测试环境或生产环境),这都会使您的环境变得
local

这是确定环境的首选方法

$env = $app->detectEnvironment(function() { 
    return getenv('APP_ENV') ? : 'production'; 
});

因此,除非您在 VHOST 文件中设置了环境变量,否则它将默认为生产环境。

但是由于您无论如何都无法指定环境变量,所以我建议您坚持使用 Bogdan 的解决方案。


0
投票

对于 docker 产品。部署,这是为了第一次运行

artisan migrate
而添加的。

BASEDIR="/foo/bar/storage"
if [ ! -f "$BASEDIR/.artisan_init" ]; then
    # ...

    { printf "yes\n"; } | ./artisan migrate

    date -I > "$BASEDIR/.artisan_init"
        
    # ...
fi

如果有多个问题需要回答,您可以堆积答案:

{ printf "yes\n"; printf "foo\n"; printf "bar\n"; } | ./artisan migrate
© www.soinside.com 2019 - 2024. All rights reserved.