2016-10-01 10 views
0

Rスクリプトを実行するWebアプリケーションを作成しようとしています。 私はこれを実現するためにphp shell_exec()を使用する予定です。PHPのexec()は、コマンドラインでRscriptを正常に実行しますが、ブラウザでは動作しません。

私は、コマンドラインを通してそれを実行し、この <?php echo shell_exec("Rscript /var/www/html/demo/MyRScript.R"); ?>

のようなテストスクリプトを書きました。 php test.php、それは右出力を与える、私はまたhtopを通して観察し、プロセスが数分のために100%のCPUを使用していたことがわかりました。

しかし、私はブラウザを通して、アドレスhttp://myURL/demo/test.phpを通してそれを訪問することを試みました。それは正しく実行されませんでした、私のRスクリプトonbrief Off On FALSE 405 0 TRUE 0 405 petitioner P R FALSE 0 396 TRUE 414 0の最初の数行だけを提供し、すぐに停止しました。私はそのプロセスをhtopで見つけることができません。

私はls,rmのような他の単純なコマンドラインを試しましたが、それらはすべてコマンドラインとWebアプリケーションの両方で正しく動作します。

私は何が間違っているのか分かりません。それはプロセスがCPUを必要以上に消費するので、Webによって呼び出された場合、いくつかのメカニズムが終了させることができますか?

また、問題を見つけるのに役立つデバッグツールや方法がある場合は、それを使用してください。

これは私の情報が十分かどうかわからない、スタックオーバーフローに関する私の最初の質問です。問題に取り組むために必要な他の情報があるかどうか教えてください。

ありがとうございました。

+0

CMDはWindowsのシェルです。 Linuxとは関係ありません。 –

+0

opps、私はコマンドラインで同じことだと思った。 –

+0

コマンドラインタグがありますが、有用ではないようです。 –

答えて

0

ファイルのパーミッションの問題です。

私のRスクリプトでは、ファイルにアクセスしようとする行がありますが、Webサーバーユーザーwww-dataには読み取り権限がありません。許可を与えた後、すべてがうまくいく。

私のコマンドの最後に2>$1を追加すると非常に便利です。私はブラウザでエラーメッセージを受け取ることができます。

関連する問題