我正在尝试构建一个允许用户运行R脚本的php文件,这样他们就不需要在服务器中打开会话,只是为了打开浏览器。
脚本中的常用bash运行正常(比如echo"某些",复制和移动数据文件,...)但是R脚本没有运行。 R用Rscript
调用Rscript --no-save --no-restore --verbose ./RAMS-mapa-onades-zones-manual.R > outputFile.Rout 2>&1
R输出提供此错误
running
'/usr/lib/R/bin/R --slave --no-restore --no-save --no-restore'
Error in library("rgdal") : there is no package called 'rgdal'
Execution halted
嗯,库(rgdal)是R脚本的第一行。 Rgdal存在于R安装中,脚本在命令行中运行正常(Rscript myscript.R)。
从php开始,运行R的用户是www-data,而在终端上用户是meteo。在我看来,需要在php Rscript执行中设置一些环境变量,但我无法找到实现它的方法。
有什么想法吗?提前致谢
答案 0 :(得分:2)
似乎我们在评论中找到了根本原因。库路径不匹配,但您可以通过lib.loc参数将它们匹配到library()。像这样:
library(rgdal, lib.loc = c("/home/meteo/R/i686-pc-linux-gnu-library/3.1", "/usr/local/lib/R/site-library", "/usr/lib/R/library"))