web-dev-qa-db-ja.com

PHPからRscriptを実行できませんが、端末からは完璧に実行されます

Ubuntuを初めて使用する場合、execを使用してPHPでRscriptを実行しようとしています。ただし、実行されません。端末から実行すると、完全に実行されます。

これはコマンドラインから実行するコードです:

/usr/lib/R/bin/Rscript /home/xin/Documents/ClassificationApp/ClassificationAllInOne.R "http://localhost/categorisation/public/classification/data/1423242832.json"

完璧に機能します。

PHP/Apacheがwww-dataとして実行され、Rscriptがrootであるため、私はそれを検索することから許可の問題であると推測できます。

私はSudoersファイルにいくつかの修正を試みましたが、どれもうまくいきませんでした:-

User_Alias WWW_USER = www-data
Cmnd_Alias WWW_COMMANDS =  /usr/lib/R/bin/Rscript, /home/xin/Documents/Classifi$

WWW_USER ALL = (ALL) NOPASSWD: WWW_COMMANDS

これはうまくいきませんでした。さまざまな組み合わせをいじりながら一日を過ごしました。それは私を怒らせています。

どんなインスピレーションも大歓迎です

M

2
user2987739

PHP外部スクリプトを実行するコード(Rbash、...)をデバッグするとき、最も簡単なことはphp-cliをインストールすることです。

Sudo apt-get install php-google-api-php-client 

php-cliは、「PHPコマンドラインインターフェイス」を意味します。名前が示すように、これは端末からPHPを使用する方法です。

次に、/usr/bin/php -q <?php YourPHPCodeHere; ?>を使用してスクリプトを実行します

または、PHPコードを含むファイルを作成します。

#!/usr/bin/php -q
<?php
echo "Hello world...";
?>

次にchmod +x szNameOfFile

./szNameOfFileと入力するだけです

PHPスクリプトへのフルパスを入力したくない場合は、ホームディレクトリにbinディレクトリを作成し、そこにすべてのスクリプトファイルを自動的にコピーします(このディレクトリは自動的に端末を終了して再度開くと、パスに追加されます)

0
Fabby