News

Prevent Destructive Commands From Running in Laravel

Published Updated
Prevent Destructive Commands From Running in Laravel image

Release updates

Never miss a Laravel release

Get an email whenever a new Laravel release lands.

As of Laravel 11.9 you can now prevent commands like database migrations from accidentally running in production environments with a Prohibitable trait:

use Illuminate\Console\Command;
use Illuminate\Console\Prohibitable;
 
class SomeDestructiveCommand extends Command
{
use Prohibitable;
}
 
// SomeDestructiveCommand::prohibit($this->app->isProduction());

The Laravel framework includes some database commands that include the Prohibitable trait, such as db:wipe, migrate:fresh, migrate:refresh, and migrate:reset:

public function boot(): void
{
FreshCommand::prohibit();
RefreshCommand::prohibit();
ResetCommand::prohibit();
WipeCommand::prohibit();
}

Using the DB Facade, you can prohibit destructive database commands built into Laravel:

// Prohibits: db:wipe, migrate:fresh, migrate:refresh, and migrate:reset
DB::prohibitDestructiveCommands($this->app->isProduction());

The prohibit() method accepts a Boolean argument that defaults to true, and you can conditionally prevent commands from running using whatever logic you need, so that you can still run them in development environments:

public function boot(): void
{
YourCommand::prohibit($this->app->isProduction());
}
Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
Mercure Broadcasting in Laravel 13.32 image

Mercure Broadcasting in Laravel 13.32

Read article
Super Stack: Laravel Starter Kit With Filament and NativePHP image

Super Stack: Laravel Starter Kit With Filament and NativePHP

Read article
Laravel MCP 1.0 Is Released image

Laravel MCP 1.0 Is Released

Read article
Laravel Vet: Review Composer Code Before It Installs image

Laravel Vet: Review Composer Code Before It Installs

Read article
What's New in PHP 8.6 image

What's New in PHP 8.6

Read article
Building EasyReply: How We Used Laravel to Unify Customer Support image

Building EasyReply: How We Used Laravel to Unify Customer Support

Read article