【问题标题】:Symfony Process - execute command from serviceSymfony 进程 - 从服务执行命令
【发布时间】:2017-08-15 19:17:38
【问题描述】:

如何运行命令 (app/console execute:my:command) 通过新流程在服务中?

我试试这个:

use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;

$process = new Process(
    'app/console execute:my:command'
);
$process->start();

但是什么都没有发生... 如果我通过终端手动调用它,它可以工作:

app/console execute:my:command

我做错了什么?

编辑 - 解决方案:我们需要编写整个路径。就我而言:

($this->kernelRootDir is : %kernel.root_dir%)
$processString = sprintf(
    'php %s/../app/console %s %s',
    $this->kernelRootDir,
    self::MY_COMMAND,
    $myArgument
);

$process = new Process($processString);
$process->start();

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

【问题讨论】:

  • 您是否尝试在 app/console 后面添加 PHP cli 的路径?

标签: php symfony process console command


【解决方案1】:

这几乎就是您真正需要做的所有事情。我总是设置工作目录并假设这是需要的,以便从项目的根目录运行 Symfony 命令

$process = new Process(
    'app/console execute:my:command'
);
$process->setWorkingDirectory(getcwd() . "../");

$process->start();

出于调试目的我一般设置

$process->setOptions(['suppress_errors' => false]);

还有

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    相关资源
    最近更新 更多