【问题标题】:How to run R through PHP with exec?如何使用 exec 通过 PHP 运行 R?
【发布时间】:2012-12-09 17:01:01
【问题描述】:

我要问一些事情,我知道它已经被问过好几次了。但是因为,过去的所有帖子都很旧,没有一个回答我的问题..我再试一次。 我在 R 语言方面是全新的,而在 php 方面相对较新。 我想要做的是使用 exec() 来自 php 的函数来执行 R 脚本。 这里的大多数人都会开始谈论 rapache、rserve,我不知道还有什么……但由于我不熟悉所有这些技术,我更喜欢只使用 exec。

当我从终端使用 Rscript 运行代码时,我将在此处显示的代码运行良好。 # R 脚本 png("temp.png") 情节(5,5) dev.off()

但是当我尝试使用 Rscript 或 PHP 中的 R CMD BATCH 运行它时,如下所示:

       echo exec("Rscript my_rscript.R"); //OR
       //echo exec("R CMD BATCH my_rscript.R");

我什么也得不到。

我检查了 exec() 函数是否可用以及它是否有效。一切都很好。 我还读到,我可能必须更改网络服务器的权限...但我不知道如何在 mamp 中执行此操作。

我希望我的问题很清楚,有人可以提供帮助。

谢谢 迪米特里斯

【问题讨论】:

  • 这在命令提示符窗口中有效吗?如果不是,要么没有正确安装,要么可执行文件不在系统路径中。
  • @cryptic:当我在命令窗口(Rscript my_rscript.R)中运行 R 脚本时,它可以工作。并在桌面上返回一个 png 图。
  • 将文件的权限设置为 755(允许所有人读取/执行)看看是否可以解决问题,如果可以,那就是权限问题。
  • 对不起,我对这些东西完全陌生。你的意思是改变R文件的权限?我这样做了:chmod u=rx my_rscript.R 但是当我想对 php 文件做同样的事情时,我得到了这个错误:chmod: "Unable to change file mode on test.php: Operation not allowed"
  • 文件有什么作用?如果它正在访问文件和目录,这些文件/目录也需要具有适当的权限。该文件将作为服务器运行,因此脚本访问需要允许服务器访问的所有文件/目录。

标签: php r exec


【解决方案1】:

不确定这是否适用于图像,但在将结果存储在 exec() 函数的第二个参数中之前,我什么也没得到

exec("Rscript test.R $N", $results);
print_r($results);

【讨论】:

  • 很好,这是我第一次从 rscript 输出中得到任何可以在 Web 浏览器中显示的内容。遗憾的是,对于将图像保存到目录并将其显示在页面上的 OP(和我的)问题,它不起作用。
【解决方案2】:

这对我有用,可以将图像保存到目录并在网页上可见。从命令行:

chown www-data:www-data /usr/bin/Rscript
chown www-data:www-data -R /PATH/TO/RSCRIPTFOLDER

首先更改 Rscript 可执行文件的权限,然后对包含 .php 文件、.R 文件等的整个文件夹执行相同操作。

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多