从php网页运行R脚本

从php网页运行R脚本,php,r,bash,Php,R,Bash,我正在尝试构建一个php文件,允许用户运行R脚本,这样他们就不需要在服务器上打开会话,只需打开浏览器 通常脚本中的bash运行正常(说echo“something”,复制和移动数据文件,…),但R脚本没有运行。用Rscript调用R Rscript --no-save --no-restore --verbose ./RAMS-mapa-onades-zones-manual.R > outputFile.Rout 2>&1 R输出给出了这个错误 running '/u

我正在尝试构建一个php文件,允许用户运行R脚本,这样他们就不需要在服务器上打开会话,只需打开浏览器

通常脚本中的bash运行正常(说echo“something”,复制和移动数据文件,…),但R脚本没有运行。用Rscript调用R

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数据,而终端上的用户是meteo。在我看来,需要在php Rscript执行中设置一些环境变量,但我找不到这样做的方法


有什么想法吗?提前感谢

看来我们已经在评论中找到了根本原因。库路径不匹配,但可以通过lib.loc参数使其与库()匹配。像这样:

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"))

我不知道,但是。。。我要检查的第一件事是。。。但是,脚本在任何环境中运行,无论用户是谁,都可以访问相同的环境变量并知道库路径。(或者随便什么)似乎有些东西没有在这个范围内定义,也许。我会尝试在没有任何库的情况下运行一些东西。。。比如打印语句之类的。作为第一个猜测-机器上可能有多个R安装吗?检查
library()
上的
lib.loc
参数。@LauriK
library()
报告
/home/meteo/R/i686 pc-linux-gnu-library/3.1
/usr/local/lib/R/site-library
中的包,以及库()中的警告
:库“/usr/lib/R/site library”不包含任何包
Hi@Laurik您是对的。lib.loc出现问题。添加您的建议会出现另一个问题,错误消息称,当rgdal加载需要时,sp不可用。最后,我将所有R库位置链接到
/usr/lib/R/site library
,现在R脚本运行良好。非常感谢你