2016-11-20 5 views
3

PHPのlocalhostでRのコードを実行しようとしています。私はこの例(https://www.r-bloggers.com/integrating-php-and-r/)に従った。RをPHPで接続する

<?php 
// poorman.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' />"); 
} 
?> 

and the R script… 

# my_rscript.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() 

私は/ var/www/html/Rフォルダに両方のファイルを持っています。私はPHPファイルを実行したが、完全に行くが、私はそれは例のWeb画像と同じ表示されていない "N"の番号を提出する。

私はまた、rnorm()の分布を表示するためだけに実行しようとしましたが、私は同じ結果を持っています - >何もありません。

私は私の問題は、PHPでRをconecctingに私は(http://rapache.net/manual.html)インストールRapacheを試してみましたが、私は 「sudoを到達したときのapache2-preforkの-devののapache2-MPM-preforkのをlibapreq2-devのR-ベースをインストールapt-getのだと思い-dev " 次のメッセージが表示されました - パッケージapache2-prefork-devを見つけられませんでした

すべての解決方法はありますか?

ジョージ

答えて

1

はあなたの問題を再作成事前に

おかげで、Apacheのエラーログが返さ:

「Rscriptは」は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチとして認識されませんファイル。

これは、Apacheサーバーがシステム環境変数を認識しないことを示します。おそらくあなたのPATH変数にRscriptがあるOSとは異なる環境でApacheを実行している可能性があります。 httpd.confや.htaccessファイルの調整を含む、システム環境変数をApacheで設定する方法を参照してください。しかし、Rscript実行ファイルの絶対パスを指している迅速な解決を検討

:私はシリアル悩みを持っている

RScript Plot Output

+0

:そう、私にとって

exec("path/to/R/bin/Rscript my_rscript.R $N"); 

は、適切な出力が得られ私はプログラミングを始めるので接続してください。 「あなたがRscriptを持っている可能性が最も高いOSとは異なる環境でApacheを実行している」と言ったときの意味は分かりません。私はubuntu 16.04を使用しています。また、あなたが言ったファイルはどこにありますか?私が達成したのは、同じフォルダに画像を保存して、PHPがそれを読むことができるようにすることでした。私は誰もが私が5年生の学校の少年のようにその例をどのように働かせるか説明できたことに感謝します。ありがとう。 –

+0

PHPの 'exec()'行にRscriptのフルパスを追加するだけで解決しましたか? – Parfait

+0

そうだと思います。私は両方のファイルを次のパス(/ var/www/html/machine)で "machine"というフォルダに入れておき、私のpoorman.phpファイルにexec()の部分を次のように書いています:exec( "/ var/www/html/machine/my_rscript.R $ N ");私はmy_srcriptを完全なパスに参加させ、それらの間にスペースを入れようとしました。私がRのtempでmy_rcript.Rを実行すると、このフォルダにPNGファイルが作成されますが、PHPからはできません。 –