Laravel 5 - 如何创建Artisan命令来执行bash脚本

时间:2017-09-14 00:39:34

标签: ubuntu laravel-5

我想获得一个工匠命令来执行时运行bash脚本。

所以我使用以下

创建了一个工匠命令

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

这是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');
}
}

在handle()中,exec和shell_exec似乎不起作用,有没有其他方法可以让artisan命令在shell中运行bash?

2 个答案:

答案 0 :(得分:2)

Laravel使用Symphony作为核心。您可以使用已经实现到Laravel的Symphony组件。对于这种情况,您可以使用这个

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

答案 1 :(得分:2)

而不是使用:

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

您可以执行以下操作:

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

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