【问题标题】:how to run php laravel artisan commands from web如何从 web 运行 php laravel artisan 命令
【发布时间】:2020-01-30 03:26:01
【问题描述】:

如何通过在 URL 中将命令作为查询参数发送来在服务器上执行 Laravel Artisan 命令?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    如果不启动新的 dockerfile,如果需要 mysql 连接命令行,则无法运行 laravel artisan 命令。如果您正在这里寻找快速而肮脏的 hack,它是:

    为了在现有的 php-fpm-alpine 上工作,使用来自 web 界面的 artisan 命令可以将这些代码添加到 index.php(通常位于 /public 目录中)

    
    if($debugmode)
    if(@$_REQUEST['artisan']){
        $kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
        $vars = explode(' ', $_REQUEST['artisan']);
        $status = $kernel->handle(
            $input = new Symfony\Component\Console\Input\ArrayInput($vars),
            new Symfony\Component\Console\Output\ConsoleOutput
        );
    
            return  '';
    }
    

    那些应该介于

    $app = require_once __DIR__.'/bootstrap/app.php';
    

    $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
    

    用法http://localhost/?artisan=vendor:publish

    【讨论】:

    • 这可能是您的应用中的非常危险代码。
    • 您确实可以检查if($debugmode),所以只要在production 环境中禁用它,这还不错。但是,将artisan 命令公开给任何可以编辑其 URL 的人会打开一些有趣的应用程序。例如,运行http://localhost/?artisan=key:generate 以生成新的应用程序密钥并销毁现有的哈希/加密/等。或者更好,http://localhost/?artisan=migrate:reset;你所有的数据库表/行都到了。
    猜你喜欢
    • 2017-11-02
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 2013-08-01
    • 2022-01-05
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多