R与php的集成

R与php的集成,php,r,Php,R,我正在尝试使用以下命令从php运行R脚本: echo "<form action='poorman.php' method='get'>"; echo "Number values to generate: <input type='text' name='N' />"; echo "<input type='submit' />"; echo "</form>"; if(isset($_GET['N'])) { $N = $_GET['N'

我正在尝试使用以下命令从php运行R脚本:

echo "<form action='poorman.php' method='get'>";
echo "Number values to generate: <input type='text' name='N' />";
echo "<input type='submit' />";
echo "</form>";

if(isset($_GET['N']))
{
  $N = $_GET['N'];

  // execute R script from shell
  // this will save a plot at temp.png to the filesystem
  exec("Rscript my_rscript.r $N");

  // return image tag
  $nocache = rand();
  echo("<img src='temp.png?$nocache' />");
}
echo”“;
回显“要生成的数值:”;
回声“;
回声“;
如果(isset($\u GET['N']))
{
$N=$_GET['N'];
//从shell执行R脚本
//这将在temp.png处将绘图保存到文件系统
exec(“Rscript my_Rscript.r$N”);
//返回图像标签
$nocache=rand();
回声(“”);
}
我的R脚本如下所示:

args <- commandArgs(TRUE)

N <- args[1]
x <- rnorm(N,0,1)

png(filename="temp.png", width=500, height=500)
hist(x, col="lightblue")
dev.off()

args是的,您可以从PHP调用R并获取其输出。如果您建议的脚本仅用于演示目的,则可以,但如果您打算在网页上使用该脚本,请注意,使用表单输入进行系统调用永远不是一种好的安全实践。可以进行多次非常严重的注入攻击

也就是说,在确保Rscript可执行文件位于您的路径中并提供my_Rscript.r的完整路径(不仅仅是脚本名称,因为PHP可能从r&脚本所在的不同路径执行命令)之后,您可以使用以下准则获取脚本标准输出&标准错误(ando也是标准输入,这将允许您不是从命令行而是直接从R stdin传递输入:

exec(“.\R\R-3.1.3\bin\Rscript.\R\R-3.1.3\bin\my\u Rscript.R$N”);
复制r文件夹并将其放在同一目录中,就像假设我使用的是xxamp一样,然后将r文件夹粘贴到htdocs中。

我假设您已经测试过直接运行r脚本,并验证了在这种情况下它确实生成了所需的png?可能重复: