我是 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 不太熟悉,所以请原谅我缺乏正确的术语)
因此,如果有人遇到同样的问题:
- 我在 PHP 系统中运行了这个(“/lib/R/bin/Rscript /var/www/html/my_r_file.R 2>&1”);
- 我收到一个错误,提示未安装库 sf,因此问题在于安装软件包时我不是 root 用户。请执行以下操作:
须藤-u su-i
然后安装您需要的所有库。
我希望这可以帮助某些人避免一天的沮丧。