【问题标题】:Conecting R with php将 R 与 php 连接起来
【发布时间】:2017-04-03 20:25:31
【问题描述】:

我正在尝试以 php localhost 方式运行 R 代码;所以我按照这个例子(https://www.r-bloggers.com/integrating-php-and-r/)。

<?php
// poorman.php

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' />");
}
?>

and the R script…

# my_rscript.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()

我在 /var/www/html/R 文件夹中有两个文件;当我运行 php 文件时运行良好,但我提交的“N”数量与示例网络图像显示的不同。

我也尝试运行只是为了显示一个 rnorm() 分布,但我得到了相同的结果 -> 什么都没有。

我认为我的问题在于用 php 连接 R,所以我尝试安装 Rapache (http://rapache.net/manual.html) 但是当我到达 “sudo apt-get install apache2-prefork-dev apache2-mpm-prefork libapreq2-dev r-base-dev” 我收到以下消息 -> 找不到包 apache2-prefork-dev

有什么解决办法吗?

提前致谢

乔治

【问题讨论】:

    标签: php r


    【解决方案1】:

    重新创建您的问题,Apache 错误日志返回:

    'Rscript' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

    这表示 Apache 服务器无法识别系统环境变量。您可能在与您的操作系统不同的环境中运行 Apache,您的 PATH 变量中很可能有 Rscript。了解如何在 Apache 中设置系统环境变量,这可能涉及调整 httpd.conf 或 .htaccess 文件。

    但是,请考虑指向 Rscript 可执行文件的绝对路径的快速解决方案:

    exec("path/to/R/bin/Rscript my_rscript.R $N");
    

    对我来说,这样做会产生适当的输出:

    【讨论】:

    • 我在连接它时遇到了一系列问题,因为我是从编程开始的。当您说“在与您的操作系统不同的环境中运行 Apache 时,我不知道您是什么意思,而您的操作系统很可能拥有 Rscript”我使用的是 ubuntu 16.04。另外,我在哪里可以找到你说的文件。我实现的是将图像保存在同一文件夹中,以便 php 可以读取它。我很感激任何人都可以像我是一个五年级的男生一样向我解释如何处理这个例子。谢谢。
    • 您是否尝试过将 Rscript 的完整路径添加到 PHP 的 exec() 行的解决方案?
    • 我想是的。我在一个名为“machine”的文件夹中都有这两个文件,路径如下[/var/www/html/machine],在我的poorman.php文件中,exec()部分是这样写的:exec("/var/www/ html/机器/ my_rscript.R $N");我尝试将 my_srcript 加入完整路径,并在它们之间留出空格。如果我在 R 中运行 my_rcript.R,则会在此文件夹中创建一个 temp,png 文件,但我无法从 php 执行此操作。
    • 我想你误解了,我的意思是 Rscript.exe 的完整路径不是你的 R 脚本,而是可执行程序(通常在安装目录的 bin 文件夹中找到)。问题是您的 PHP 找不到 Rscript 环境变量,因此需要绝对的一个(在 Unix 中,不包括 .exe 扩展名)。请参阅此处的答案。试试看。
    • 我按照你的建议做了,但没有成功。 // 从 shell 执行 R 脚本 // 这会将 temp.png 中的绘图保存到文件系统 exec("/usr/lib/R/bin/Rscript my_rscript.R $N");这是我在 php 文件中写的,但没有返回图像。我还尝试在 Rscript 之后编写 .exe,结果相同。两个文件必须在同一个文件夹中可以吗?提前致谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多