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

Laravel 5.6 Bring site up without commands

我有一个 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 地址,或者在不使用命令的情况下恢复站点?

你应该试试这个:

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

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

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

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

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

Sometimes you may wish to execute an Artisan command outside of the CLI. For example, you may wish to fire an Artisan command from a route or controller. You may use the call method on the Artisan facade to accomplish this. The call method accepts either the command's name or class as the first argument, and an array of command parameters as the second argument. The exit code will be returned:

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地址了。无论如何,如果您只想 "hide" 前端,我会寻找不同的解决方案,方法是创建一个 "hides" 网站但按顺序维护管理面板的特定变量(配置、数据库等)以更简单的方式 activate/deactivate。