从php文档运行node.js脚本并获取输出



我正在尝试从PHP运行node.js脚本,并在PHP中获得输出。

我唯一能让它发挥作用的方法就是这样,但它似乎真的很不可靠。

public function test() {
exec('/usr/bin/node ' . 'test.js', $o);

dd($o);
}
function test() {
return 'hello world';
}
console.log(test())

实现这一目标的最佳方式是什么?我也需要把参数传给它,我怀疑这是实现它的方法

这可能没有任何区别,但我正在使用Laravel

运行一个"程序";来自PHP的代码有点复杂,尤其是当您需要使用args运行时。由于参数需要正确转义,因此必须调用escapestellarg((来防止传递引号、文件路径(包括空格(和以~开头的字符串时出现问题。

我建议使用依赖项-symfony/process文档。

我知道使用依赖项的链接进行响应是不受欢迎的,但处理可能的参数和/或二进制输出可能很困难,尤其是在Windows和/或其他非posix系统上。

使用symfony/process,运行node脚本相当简单,因为该节点位于PATH

<?php
// Run the composer autoloader
require_once __DIR__ . '/vendor/autoload.php';
use SymfonyComponentProcessExceptionProcessFailedException;
use SymfonyComponentProcessProcess;
$process = new Process(['node', 'script.js']);
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
echo $process->getOutput();

文档中包含了更深入的用法,包括并行运行多个进程。

最新更新