Symfony - 使用命令 运行 Phing 任务

Symfony - use Command to run Phing task

当我尝试从控制台 运行 该 phing 命令:bin/phing clear_cache_action 时,一切正常。不幸的是,当我尝试 运行 来自 Symfony 项目中的控制器的相同命令时,我得到了一个错误。

我的代码:

    public function clearAction()
    {
        $process = new Process('bin/phing clear_cache_action');
        $process->run();

        if (!$process->isSuccessful()) {
            throw new ProcessFailedException($process);
        }

        echo $process->getOutput();
    }

Symfony returns 我那个错误:

The command "bin/phing clear_cache_action" failed.

Exit Code: 127(Command not found)

Working directory: /var/www/caolin/web

Output:
================


Error Output:
================
sh: 1: bin/phing: not found

Linux 命令,例如'ls' 正常工作。 如何从代码中 运行 phing 命令?

我猜你正试图从 Controller 执行 phing。因此 Working directory: /var/www/caolin/web 而不是 /var/www/caolin 导致将 bin/phing 解析为不存在的 /var/www/caolin/web/bin/phing。您应该将当前工作目录设置为 %kernel.project_dir%:

$process = new Process(
    ['bin/phing', 'clear_cache_action'], 
    $this->getParameter('kernel.project_dir')
);
$process->run();

但是,我不建议从 Controller 启动进程,除非您真的确定自己在做什么。