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
01興味深いことに
私はmongoDbConnect
行を削除する場合my_script.R
はmy_script.R
変更から予測されるように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は、印刷(I:5) '追加した場合' *前* 'mongoDbConnect '前の' print'をそのままにしておくと、出力は 'string(10)" [1] 3 4 5 "'となります。 'mongoDbConnect'が失敗したようです。しかし、私はそれがシェルから実行されていないことを確認することができます。 – rootkea
PHPコードをコマンドラインまたはWebサーバーで実行していますか?それがWebサーバーにある場合 - Apache、Nginxなど - どのユーザーがスクリプトを呼び出しているかを確認し、ユーザーが実行する権限を持っていることを確認し、必要なフォルダやファイルを読み書きします。 Apacheでは、ユーザはおそらく 'www-data'です。 – jotaelesalinas