php artisan线上执行

场景,很多时候我们本地的代码是直接同步到线上的。如果我们需要添加或者修改数据库,是没有办法直接在线上执行php artisan migrate命令的

  • 我的第一个想法是在图1处,让线上一分钟后执行,虽然一分钟的时间可能有点久,但是一种方法。不过我发现他并没有运行,可能是此处只能运行自己写的artisan命令,而并不能运行框架自带的命令吧
图1

后来我就想在一个路由里面执行,不过线上一般都是生产模式,会出现图2的报错。如果我们在控制台里,可以如图3进入交互模式,直接yes即可
我此时的想法是在执行之前修改配置,如下

    Route::get('/foo', function () {
        dump(config('app.env'));
        app('config')->set('app.env', 'local');
        dump(config('app.env'));
        Artisan::call('migrate'); // 执行命令
        dump(Artisan::output()); // 打印输出
    });
 Route::get('/artisan',function (){
        // 填充SystemMenuTableSeeder 数据表  带--参数
        Artisan::call('db:seed',['--class'=>'SystemMenuTableSeeder']);
        // 清空缓存
        Artisan::call('cache:clear');
        dump(Artisan::output());
    });

虽然打印的结果都是local,可是依然是图2的报错。我想可能是执行Artisan::call的时候出现的原因,但还是不知道什么原因

这两种方式都可以修改配置

     app('config')->set('app.env', 'local');
     config(['app.env'=>'local']);

如果修改配置没有生效,可能需要在命令行执行

 php artisan config:cache
图2
图3

既然以上不放不可行,那就临时修改config/app/php文件图4
但是记得在线上执行成功后,要把配置及时修改过来

图4
图5
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,926评论 0 5
  • Laravel 学习交流 QQ 群:375462817 本文档前言Laravel 文档写的很好,只是新手看起来会有...
    Leonzai阅读 8,082评论 2 12
  • 今日体验:今天神儿发动机拆下来了.发现正时不对窜了.需要把缸盖也拆了和客户沟通.拆完客户过来看看是怎么回事.问我们...
    京心达何海港阅读 276评论 0 0
  • 二十七岁半,躺在卧铺车厢的中铺,窝成一团,不知道未来在哪?翻着空间里朋友们的新生宝宝照,我努力的珍惜所有遇到的人,...
    小鱼儿666阅读 405评论 2 3