【发布时间】:2015-02-12 14:40:13
【问题描述】:
我正在尝试构建一个允许用户运行 R 脚本的 php 文件,这样他们就不需要在服务器中打开会话,只需打开浏览器即可。
脚本中的通常 bash 运行良好(比如回显“某物”,复制和移动数据文件,...),但 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
好吧,library(rgdal) 是 R 脚本的第一行。 Rgdal 存在于 R 安装中,并且脚本从命令行运行良好(Rscript myscript.R)。
从php开始,运行R的用户是www-data,而在终端上用户是meteo。在我看来,需要在 php Rscript 执行中设置一些环境变量,但我找不到方法。
有什么想法吗?提前致谢
【问题讨论】:
-
我不知道,但是...我要检查的第一件事是...但是脚本正在运行,在任何用户的任何环境中,都可以访问相同的环境变量并且知道库路径。 (或其他)似乎没有在该范围内定义的东西,也许。我会尝试在没有任何库的情况下运行一些东西......比如打印语句或其他东西。
-
作为第一个猜测 - 机器上可能有多个 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/library中的包和警告In library() : library ‘/usr/lib/R/site-library’ contains no packages