这就是我现在正在尝试的:
PHP
shell_exec('node bin/gfm.js '.escapeshellarg($code))
节点.js
console.log(process.argv[2]);
但是 Node 似乎只收到了 的第一行,$code
所以它似乎escapeshellarg
没有正确转义换行符。
我还能怎么做?如果这更容易的话,我很好用stdin
,但它在 PHP 和 Node 端看起来都很复杂。
这需要一些摆弄,但我想我明白了:
$spec = array(
0 => array("pipe", 'r'),
1 => array("pipe", 'w'),
);
$proc = proc_open('node bin/gfm.js', $spec, $pipes);
fwrite($pipes[0], $code);
fclose($pipes[0]);
$resp = stream_get_contents($pipes[1]);
fclose($pipes[1]);
proc_close($proc);
echo $resp;
var fs = require('fs');
var size = fs.fstatSync(process.stdin.fd).size;
var buffer = size > 0 ? fs.readSync(process.stdin.fd, size)[0] : '';
console.log(buffer);
信用:西格蒙德