【发布时间】:2020-01-30 03:26:01
【问题描述】:
如何通过在 URL 中将命令作为查询参数发送来在服务器上执行 Laravel Artisan 命令?
【问题讨论】:
如何通过在 URL 中将命令作为查询参数发送来在服务器上执行 Laravel Artisan 命令?
【问题讨论】:
如果不启动新的 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;你所有的数据库表/行都到了。