Laravel 5.6无需命令即可启动站点

时间:2019-01-07 11:12:04

标签: php laravel laravel-5.6 artisan

我有一个Laravel 5.6网站,我希望为非技术管理员启用此功能,以便他可以在任何时间打开或关闭该网站。

我已经成功使用以下网站

    Route::get('shut/down', function() {
        `Artisan::call('down');`
    });

但是当我希望我的应用程序使用此备份

Route::get('bring/the/application/back/up', function() 
{
    Artisan::call('up');
});

但这无法正常工作,因为我的网站已经关闭,因此无法正常工作。 但是在命令行中,我们有一些命令可以用来排除维护模式的IP地址。


示例: php artisan down --allow=127.0.0.1 --allow=192.168.0.0/16

我们是否有任何变通办法来在不使用命令行方法的情况下排除某些选定的IP地址,或者在不使用命令的情况下备份站点?

3 个答案:

答案 0 :(得分:2)

您必须深入研究Official documentation,其中解释了如何以编程方式调用命令:

  

有时您可能希望在CLI外部执行Artisan命令。例如,您可能希望从路线或控制器触发Artisan命令。您可以在Artisan外观上使用call方法来完成此操作。 call方法接受命令名称或类作为第一个参数,并接受命令参数数组作为第二个参数。退出代码将返回:

Route::get('/foo', function () {
    $exitCode = Artisan::call('email:send', [
        'user' => 1, '--queue' => 'default'
    ]);

    //
});

因此,在您的情况下,您必须更新路由回调:

Route::get('shut/down', function() {
    Artisan::call('email:send', [
        '--allow' => 'xxxx.xxxx.xxxx.xxxx' // Your ip address
    ]);
});

通过这种方式,您的IP地址将被启用以访问bring/the/application/back/up地址。无论如何,如果您只是想简单地“隐藏”前端,则可以通过创建一个特定的变量(配置,数据库等)来“隐藏”网站,但保留管理面板以便激活/停用,从而寻找一种不同的解决方案以更简单的方式。

答案 1 :(得分:1)

您应该尝试以下操作:

Artisan::call('down', ['--allow' => '127.0.0.1']);

答案 2 :(得分:1)

您可以通过编程方式将参数作为第二个参数添加到call函数中:

Artisan::call('down', ['--allow' => '192.168.0.0/16']);

文档中的更多信息:https://laravel.com/docs/5.7/artisan#programmatically-executing-commands