防止在 Laravel 中运行破坏性命令
上次更新于 作者: Paul Redmond
从 Laravel 11.9 开始,您现在可以使用 Prohibitable
特性来防止像数据库迁移这样的命令意外地在生产环境中运行。
use Illuminate\Console\Command;use Illuminate\Console\Prohibitable; class SomeDestructiveCommand extends Command{ use Prohibitable;} // SomeDestructiveCommand::prohibit($this->app->isProduction());
Laravel 框架包含一些包含 Prohibitable
特性的数据库命令,例如 db:wipe
、migrate:fresh
、migrate:refresh
和 migrate:reset
public function boot(): void{ FreshCommand::prohibit(); RefreshCommand::prohibit(); ResetCommand::prohibit(); WipeCommand::prohibit();}
使用 DB
Facade,您可以禁止 Laravel 内置的破坏性数据库命令。
// Prohibits: db:wipe, migrate:fresh, migrate:refresh, and migrate:resetDB::prohibitDestructiveCommands($this->app->isProduction());
prohibit()
方法接受一个默认值为 true
的 Boolean
参数,您可以使用您需要的任何逻辑有条件地阻止命令运行,以便您仍然可以在开发环境中运行它们。
public function boot(): void{ YourCommand::prohibit($this->app->isProduction());}