laravel核心

php artisan线上执行

2018-08-16  本文已影响10人  云龙789

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

图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
上一篇 下一篇

猜你喜欢

热点阅读