【问题标题】:How to run artisan command in bash script outside laravel?如何在 laravel 之外的 bash 脚本中运行 artisan 命令?
【发布时间】:2019-05-24 16:04:59
【问题描述】:

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

现在,我想在 Symfony 的 bash 脚本中编写 'php artisan down' 命令,这样如果我将代码合并到 Symfony,那么两个应用程序都会停止运行。

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

【问题讨论】:

    标签: laravel bash symfony


    【解决方案1】:

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

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

    只写完整路径。

    【讨论】:

    • 好的,我也想在 laravel bash 脚本中编写 Symfony 'sudo supervisorctl stop all'。如何做到这一点
    • 只需将命令添加到 artisan 下面的脚本中,但不能在 bash 脚本中使用 sudo,整个 bash 脚本必须以超级用户身份运行。
    【解决方案2】:

    你可以在你的 Symfony 项目中使用Symfony Console

    //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 控制台组件! 所以如果你想在 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();
        }
    

    附注:

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

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

    【讨论】:

    • 我想要所有这些都在 bash 脚本中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    相关资源
    最近更新 更多