我正在尝试通过PHP中的Node.js运行代码而不触及文件系统(磁盘)。这可能吗?
<?php
function renderJs($script) {
$path = __DIR__.'/'.md5($script).'.js';
file_put_contents($path, $script);
$rendered = `node $path`;
unlink($path);
return $rendered;
}
$val = renderJs('console.log(1+1)'); // 2
理想情况下,它就像是
$magicBlob = php_magic($script);
$rendered = `node $magicBlob`;
我不能像在
中那样评估它$rendered = `node --eval "$script"`;
因为脚本可能有引号会破坏我的外引号。
答案 0 :(得分:1)
使用escapeshellarg对我有用:
$js = <<<EOF
hello = function (name) {
console.log('`Hello there '+name+"!!`");
}
hello('PHP');
EOF;
$rendered = system("node --eval ".escapeshellarg($js));
我不知道这个想法有多好,但是......