我想用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;
有什么想法吗?
答案 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的用户。