如何在laravel之外的bash脚本中运行artisan命令?

时间:2019-05-24 07:27:07

标签: laravel bash symfony

我正在使用两个框架,即Laravel和Symfony用于两个相互链接的应用程序。两者都有bash脚本。

现在,我想在Symfony的bash脚本中编写“ php artisan down”命令,这样,如果我将代码合并到Symfony,则两个应用程序都将关闭。

如何在Symfony框架中编写Laravel artisan命令?

2 个答案:

答案 0 :(得分:1)

它应该像其他任何命令一样工作:

#!/bin/bash
php /full/project/path/artisan down

只需写下完整路径。

答案 1 :(得分:1)

您可以使用Symfony Console在Symfony项目中执行此操作:

//in your symfony project
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;


public function processCmd() {
    $process = new Process('php /absolute/path/to/project/artisan down');
    $process->run();
    if (!$process->isSuccessful()) {
        throw new ProcessFailedException($process);
    }
    echo $process->getOutput();
}

更新:

Laravel还使用相同的symfony的Console组件! 因此,如果您想在Laravel中运行某些程序,则可以使用上面的相同代码。

示例:

    //in your laravel project 
    use Symfony\Component\Process\Process;
    use Symfony\Component\Process\Exception\ProcessFailedException;


    public function processCmd() {
        $process = new Process('supervisorctl stop all');
        $process->run();
        if (!$process->isSuccessful()) {
            throw new ProcessFailedException($process);
        }
        echo $process->getOutput();
    }

PS:

如果要运行多个命令,可以传递一个数组:

 $process = new Process(array('ls', '-lsa'));