无法从PHP运行R命令。路径问题?

时间:2013-11-11 01:46:01

标签: php linux r

我正在尝试使用exec从PHP运行R命令。我知道使用RServer或套接字连接会更有意义,但我目前无法使用这些选项。

代码如下所示:

$cmd = '/var/www/r.sh';
exec($cmd, $out, $return_var);

r.sh包含以下内容

#!/bin/bash
source /home/ubuntu/.bashrc
cd /home/ubuntu
R CMD BATCH RFile.R

当我从shell发出命令时,它的工作原理非常好。当我从PHP运行命令时,出现以下错误:

> test( read.csv("OutData.csv",header=T,stringsAsFactors=FALSE,encoding="UTF-8"))
Error in library(randomForest) :
  there is no package called 'randomForest'
Calls: test -> library
Execution halted

我最初的想法是它可能与许可相关。我已经给www-data读取了一切执行权限但无济于事。我也从shell运行命令作为www-data用户,它工作正常。它仅在从PHP调用时失败。

所以,我现在认为这是一个路径问题。 randomForest是一个R库,正确安装在盒子上:

ubuntu@<removed>:/var/www$ sudo find / -name randomForest
/home/ubuntu/R/x86_64-unknown-linux-gnu-library/3.0/randomForest
/home/ubuntu/R/x86_64-unknown-linux-gnu-library/3.0/randomForest/R/randomForest

我找不到任何设置路径的shell环境变量,所以我不明白为什么命令在shell中运行,而不是从PHP运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

相关环境变量为R_LIBSR_LIBS_USER; R Installation and Administration Manual是相关参考。如果要查看如何在R会话中设置这些变量,请尝试

ss <- Sys.getenv()
ss[grep("^R_LIB",names(ss))]