2014-02-26 153 views
1

我有一个R程序可以使用“R CMD BATCH file.r”和“Rscript file.r”从命令行正确执行。如果我尝试通过PHP代码执行,我会得到奇怪的结果。这里是我的结果:如何从PHP代码执行R程序?

$lastline = system("R CMD BATCH file.r", $returnval); 

** $ returnval = 133,R代码创建一个溃败的输出文件,R代码似乎并没有被完全执行,因为有应已创建SQL记录

$lastline = system("Rscript file.r", $returnval); 

**没有什么是以往任何时候都回来了,浏览器只是旋转无限期

我一直在使用exec_shell和exec也试过。我得到相同的结果。有关如何通过PHP有效执行R代码的想法?从我读过的内容来看,“R CMD BATCH”选项可能更有前途,但是,R/RMySQL所完成的工作似乎并没有完成。不知道这是问题还是别的。但我知道R程序可以通过命令行正常执行。

此外,我宁愿不必使用任何Apache或PHP模块来实现这一点。感谢您的输入。

+1

可能是一个权限问题 – 2014-02-26 23:07:27

+1

使用'须藤-u your_apache_user [R CMD批file.r',看看PHP与所需的权限运行按预期运行脚本。 – Sammitch

+0

@Sammitch,你的建议工作。谢谢! – Josh

回答

0

我会推荐使用Rserve来运行R代码。 Rserve是一个在后台运行的TCP/IP服务器。有一个模块(rserve-php),但您可以重新创建功能。

您也可以使用插座与make.socket()功能,它是内部R.