使用Apache Server

时间:2016-07-06 17:07:22

标签: php r apache

我想用Apache Web Server在PHP代码中执行R脚本(名为script.R)。 这是我的R代码:我安装包然后导入数据然后我可以继续对数据进行分类树:

library(lubridate)
library(plyr)
library(rpart)
library(sqldf)
library(survival)
library(randomForest)
library(rpart.plot)

data=read.table(file = "t.txt",header = T,sep = ";",stringsAsFactors = T)

input=read.table(file = "file.txt",header = T,sep = ";",stringsAsFactors = T)

tree=rpart(sat~.,data,method="class")


png("tree.png", width=1000, height=800, antialias="cleartype")
plot(tree, uniform=TRUE,
     main="Classification Tree")
text(tree, use.n=TRUE, all=TRUE, cex=0.8)

dev.off()

我的php脚本必须执行此R脚本。它们被放置在" C:\ Apache24 \ htdocs"用" file.txt"和" t.txt"

所以我的php文件包含在:

<?php
exec("Rscript script.R", $results);
print_r($results);
?>

但是我得到了#34; Array()&#34;

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在系统范围内安装所需的R个软件包。在我的机器上,这需要:

$ sudo R
> install.packages("Rpkg", lib = "/usr/local/lib/R/site-library/")

<强>解释

我看到你安装了几个R个软件包。而且我猜你已经将它们安装在默认位置,即用户主目录。

因此,如果您尝试从命令行执行R脚本,请执行以下操作:

$ php foo.php  

您将看到脚本成功执行(假设其余代码没有错误)并且script.R按预期调用。

但是当您尝试从apache执行php时,这将失败。原因是,由于您已在主目录中安装了R个包,因此www-data无法访问它们,即在apache下执行php的用户。