我正在尝试从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();
文档中包含了更深入的用法,包括并行运行多个进程。