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