jukerok
jukerok

Reputation: 357

Laravel 5 - How to create an Artisan command to execute bash script

I want to get an artisan command to run a bash script when executed.

So I've created an artisan command using the following

php artisan make:command backupList --command=backup:list

And here is backupList.php

<?php

namespace App\Console\Commands;

require_once __DIR__ . '/vendor/autoload.php'; 

use Illuminate\Console\Command;


class backupDB extends Command
{

protected $signature = 'backup:list {name}';

protected $description = 'Database backup tool';



public function __construct()
{
    parent::__construct();
}



public function handle()
{
    $this->exec('ls -la');
}
}

In handle() exec and shell_exec don't seem to work, are there any alternatives to get the artisan command to run bash in shell?

Upvotes: 5

Views: 12250

Answers (2)

Niraj Shah
Niraj Shah

Reputation: 15457

Rather than use:

$this->exec('ls -la');

You can simply do the following:

// execute command
exec("ls -la", $output);

// print output from command
$this->comment( implode( PHP_EOL, $output ) );

Upvotes: 18

Anar Bayramov
Anar Bayramov

Reputation: 11584

Since Laravel uses Symphony in core. You can use Symphony Components that are already implemented to Laravel. For this situation you can use this one

http://symfony.com/doc/current/components/process.html

Upvotes: 6

Related Questions