R和php集成

jkj*_*kjk 4 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'];

  // 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' />");
}
Run Code Online (Sandbox Code Playgroud)

我的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()
Run Code Online (Sandbox Code Playgroud)

它没有生成temp.png

r脚本很好,但似乎我不能从PHP执行此脚本.任何帮助将不胜感激?

注意我使用ubuntu.谢谢,

小智 5

是的,您可以从PHP调用R并获得其输出.如果您建议的脚本仅用于演示目的,那么如果您打算在网页上使用该脚本,请注意使用表单输入进行系统调用绝不是一个好的安全做法.可以完成多种非常严重的注入攻击.

话虽如此,在确定Rscript可执行文件在您的路径中并向my_rscript.r提供FULL PATH(不仅仅是脚本名称,因为PHP可以从R和脚本可能的其他路径执行命令)之后,您可以使用以下指南来获取脚本标准输出和标准错误(也是标准输入,这将允许您不是从命令行传递输入,而是直接从R stdin传递:

检查php exec的输出总是返回空数组