1
我index.php
:
<?php
$n = 3;
exec("Rscript my_script.R $n", $out);
var_dump($out);
<?
my_script.R
:
#!/usr/bin/env Rscript
i <- as.numeric(commandArgs(TRUE))
rootkea <- mongoDbConnect('rootkea')
print(i:10)
输出:
array(0) { }
壳牌输出:
$ Rscript my_script.R 3
Loading required package: rJava
Loading required package: methods
[1] 3 4 5 6 7 8 9 10
有趣的是从my_script.R
改性my_script.R
如预期如果删除mongoDbConnect
线PHP的作品:
#!/usr/bin/env Rscript
i <- as.numeric(commandArgs(TRUE))
#rootkea <- mongoDbConnect('rootkea')
print(i:10)
输出:
array(1) { [0]=> string(27) "[1] 3 4 5 6 7 8 9 10" }
壳牌输出:
$ Rscript my_script.R 3
Loading required package: rJava
Loading required package: methods
[1] 3 4 5 6 7 8 9 10
我需要在my_script.R
之前的数据库连接和其他处理我打印结果。我如何使exec
存储输出在$out
的说法?
现在,我得到的输出是:'字符串(0) “”' – rootkea
如果我添加了'打印(I:5)另一个有趣的一点'*之前*'mongoDbConnect '保持前面的'print'完好,我得到的输出为:'string(10)“[1] 3 4 5”'。就好像'mongoDbConnect'失败了一样。但我可以验证它不是通过从shell运行。 – rootkea
您是在命令行还是在Web服务器上运行PHP代码?如果它位于Web服务器-Apache,Nginx或其他任何地方,则检查哪个用户正在调用脚本,并确保用户有权运行它并读取/写入所需的文件夹或文件。在Apache上,用户最有可能是'www-data'。 – jotaelesalinas