2011-10-30 73 views
4

我試圖使用運行從PHP的R腳本如下:R和PHP集成

echo "<form action='poorman.php' method='get'>"; 
echo "Number values to generate: <input type='text' name='N' />"; 
echo "<input type='submit' />"; 
echo "</form>"; 

if(isset($_GET['N'])) 
{ 
    $N = $_GET['N']; 

    // execute R script from shell 
    // this will save a plot at temp.png to the filesystem 
    exec("Rscript my_rscript.r $N"); 

    // return image tag 
    $nocache = rand(); 
    echo("<img src='temp.png?$nocache' />"); 
} 

和我的[R腳本如下所示:

args <- commandArgs(TRUE) 

N <- args[1] 
x <- rnorm(N,0,1) 

png(filename="temp.png", width=500, height=500) 
hist(x, col="lightblue") 
dev.off() 

它不產生臨時。 png

r腳本很好,但似乎我無法從php執行此腳本。任何幫助將不勝感激?

注意使用ubuntu。 謝謝,

+1

我假設你已經測試過直接運行R腳本並驗證它確實在那種情況下產生了所需的png? – joran

+0

是的,它工作正常 – jkjk

+0

可能的重複:http://stackoverflow.com/questions/4818641/using-r-through-php – aL3xa

回答

5

是的,你可以從PHP調用R並獲得它的輸出。如果您提出的腳本僅用於演示目的,那麼只是可以的,但是如果您要在網頁上使用該腳本,請注意,使用表單輸入進行系統調用絕不是一種好的安全措施。有多種非常嚴重的注射攻擊可以完成。

這就是說,在確定Rscript可執行文件位於您的路徑中並提供了my_rscript.r的完整路徑(不僅僅是腳本名稱,因爲PHP可能會從其他路徑執行命令,其中腳本可能會執行R &可以),則可能使用以下準則來獲取腳本標準輸出&標準誤差(安藤也標準輸入,這將允許用戶從命令行,而是直接來自R標準輸入不能通過輸入:

check the output of php exec always returns empty array

1

exec(「。\ R \ R-3.1.3 \ bin \ Rscript。\ R \ R-3.1.3 \ bin \ my_rscript.R $ N」); 將r文件夾並把它放在同一個目錄中,比如假設我使用的是xxamp,然後將R文件夾粘貼到htdocs中。