2 回答
TA贡献1789条经验 获得超10个赞
您可以为此使用 cli-r标志。PHP
const runner = require('child_process');
const phpString = `'echo "hi";'`
runner.exec('php -r ' + phpString, (err, stdout, stderr) => {
console.log(stdout) // hi
});
尽管我会改用execFile/spawn,以避免转义参数
const runner = require('child_process');
const phpString = `echo "hi";` // without <?php
runner.execFile('php', ['-r', phpString], (err, stdout, stderr) => {
console.log(stdout) // hi
});
如果你想使用<?php标签,你应该使用spawn并写入stdin. 我认为这是最好的方法。
const php = runner.spawn('php');
const phpString = `<?php echo "hi";?>` // you can use <?php
// You can remove this if you want output as Buffer
php.stdout.setEncoding('utf8')
php.stdout.on('data', console.log)
php.stderr.on('data', console.error)
php.stdin.write(phpString)
php.stdin.end()
请记住,不建议允许用户在您的服务器上执行代码。
TA贡献1895条经验 获得超7个赞
Marcos 已经给出了有效且正确的答案,我想补充一点,您也可以将 -code 通过管道传递php给php-executable:
const { exec } = require('child_process');
const phpString = '<?php echo 1; ?>';
exec(`echo "${phpString}" | php`, (error, stdout, stderr) => {
console.log(stdout); // prints "1"
});
- 2 回答
- 0 关注
- 131 浏览
添加回答
举报