【发布时间】:2020-09-11 15:09:25
【问题描述】:
这里是新手,也是使用 php 编码的新手。 我目前正在尝试使用 exec() 函数从 php 执行 RScript。 当我在 localhost 中运行 php 代码时,它会打开 RStudio 程序,但不会执行脚本中的代码。 (这让我觉得这不是目录问题,因为它实际上可以找到文件) 这是我尝试过的经典示例。 php代码:
<html>
<head>
<h1>PHP and R Integration Sample</h1>
</head>
<body>
<?php
// Execute the R script within PHP code
// Generates output as test.png image.
exec("RvsPHP.R");
?>
<img src="test.png?var1.1" alt="R Graph">
</body>
</html>
然后,我的Rscript(同目录下保存为“RvsPHP.R”):
x <- rnorm(6,0,1)
png(filename="test.png", width=500, height=500)
hist(x, col="orange")
dev.off()
我对 Rscript 的输出不感兴趣,只是它被执行(即创建 .png 图像) 注意:一旦 exec() 使用 RStudio 打开文件,如果我手动点击 ctrl+enter 并执行脚本,就会创建 .png 图像并且一切正常。如果我不这样做,RStudio 将保持打开状态,没有任何事情发生,并且浏览器会一直加载,直到达到超时。我找不到避免按 ctrl+enter 的手动部分的方法。我也尝试过 passthru() 和 system() php 函数,但没有成功。
提前致谢! 问候,胡安弗兰
【问题讨论】:
-
你的 R 脚本中有 shebang 吗?
-
你是从 PHP 还是
Rscript调用 RStudio? (如果是前者,从网络开发的角度来看,这似乎是不可持续的。) -
我没有shebang。我应该在 R 文件的开头添加一个吗?我想这就是你的意思:rdocumentation.org/packages/utils/versions/3.6.2/topics/Rscript。另一方面,我应该修改 php 文件中的其他内容吗?