无法从 PHP 运行 Rscript,但它从终端运行完美

无法从 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

这没用。我花了一天时间尝试各种组合。这让我发疯了。

任何灵感都会受到欢迎

答案1

R调试执行外部脚本( ,, ...)的 PHP 代码时,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在您的主目录中创建一个目录并将所有脚本文件复制到那里(退出并重新打开终端后,此目录会自动添加到路径中)

答案2

所以我知道这是一篇旧帖子。但我刚刚遇到了同样的问题,不幸的是上面的解决方案对我不起作用。(抱歉我对 Linux 不太熟悉,所以请原谅我缺乏正确的术语)

因此,如果有人遇到同样的问题:

  1. 我在 PHP 系统中运行了这个(“/lib/R/bin/Rscript /var/www/html/my_r_file.R 2>&1”);
  2. 我收到一个错误,提示未安装库 sf,因此问题在于安装软件包时我不是 root 用户。请执行以下操作:

须藤-u su-i

然后安装您需要的所有库。

我希望这可以帮助某些人避免一天的沮丧。

相关内容