在Laravel控制器中调用symfony/process总是返回"<command> is not recognized"



我试图通过调用特定路由来git pull。我在我的控制器中使用symfony/process,如下所示:

public function pull()
{
$process = new Process(["git","pull"]);
$process->setWorkingDirectory(base_path());
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
echo 'ERR > '.$buffer;
} else {
echo 'OUT > '.$buffer;
}
});
}

当我到达路线时,它会返回:

ERR > 'git' is not recognized as an internal or external command, operable program or batch file.

然后我尝试将该命令更改为任何其他命令,如ls、npm install、rm等,但它仍然返回相同的错误。

致所有来到这里的人;为了运行系统命令,如从shell或cmd(在windows、linux或mac上(:

$process = Process::fromShellCommandline('inkscape --version');
$process->run(function ($type, $buffer) {
if (Process::ERR === $type) {
echo 'ERR > ' . $buffer;
} else {
echo 'OUT > ' . $buffer;
}
});

输出为:

OUT>Inkscape 1.0.2(e86c8708792021-11-15(ERR>Pango版本:1.48.0

别忘了阅读文档:

https://symfony.com/doc/current/components/process.html#installation

相关内容

最新更新