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
PHP外部スクリプトを実行するコード(R
、bash
、...)をデバッグするとき、最も簡単なことは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
ディレクトリを作成し、そこにすべてのスクリプトファイルを自動的にコピーします(このディレクトリは自動的に端末を終了して再度開くと、パスに追加されます)