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 關注
- 157 瀏覽
添加回答
舉報