Php 从wordpress安装运行exec()Rscript
目标: 从wordpress页面运行一个简单的RscriptPhp 从wordpress安装运行exec()Rscript,php,r,amazon-ec2,Php,R,Amazon Ec2,目标: 从wordpress页面运行一个简单的Rscript 我当前正在尝试在加载页面时使用exec()运行Rscript。该脚本从整数1到10创建100个随机样本的直方图,将系统时间写入标题,并将图形保存到.png文件 设置: 在Ubuntu EC2微实例上运行Wordpress安装 R已通过ssh成功安装和测试 使用Exec PHP Wordpress插件,以便编写和执行PHP代码(测试成功) PHP代码(在wordpress页面中) 我希望得到命令行输出以检查错误。这可能吗?我认为
- 我当前正在尝试在加载页面时使用exec()运行Rscript。该脚本从整数1到10创建100个随机样本的直方图,将系统时间写入标题,并将图形保存到.png文件
- 在Ubuntu EC2微实例上运行Wordpress安装
- R已通过ssh成功安装和测试
- 使用Exec PHP Wordpress插件,以便编写和执行PHP代码(测试成功)
我希望得到命令行输出以检查错误。这可能吗?我认为问题在于您没有指定
Rscript
的完整路径,而运行PHP/Apache的用户不知道在哪里搜索它
更新exec
命令(在Linux上):
exec(“/usr/bin/Rscript/test.R”);
无论如何,我建议稍后为任务安装,并(基于此)运行
r
,而不是Rscript
,以便让事情运行得更快-如果安装例如不是一个选项。要了解问题,请尝试:
$e = exec("\usr\bin\Rscript <PATH>/test.R 2>&1");
var_dump($e);
$e=exec(“\usr\bin\Rscript/test.R 2>&1”);
var_dump($e);
如果您得到类似于:dyn.load(文件,DLLpath=DLLpath,…)中的错误。。。
您可能需要更新服务器动态库(尝试搜索libfreetype.dylib),或者如果您正在运行MAMP(就像我一样),则需要注释(#)以下两行未注释的行:/Applications/MAMP/Library/bin/envvars
我知道你发这个问题已经很久了,但我花了很多时间处理类似的问题——希望有人能节省一些时间;) 它是否按照命令行的预期工作?当我以普通用户的身份使用ssh时,r脚本运行它需要多长时间。脚本执行得非常快。这可能是权限问题吗?不会写字吗?我怎么检查这个?我很难从php exec()调用中获得任何输出。我猜脚本是在HTML发送给用户时运行的,因此他们会在打印时下载旧版本的绘图updated@hadley我认为这是可能的,但我检查了一下,图像从未更新过。我甚至走进机器检查了时间戳。从命令行运行Rscript时,这一点非常清楚。我最初使用了完整路径,得到了相同的结果。同时我会调查littler。您是否安装/配置了apparmor或类似产品?试着从命令行以Web服务器用户的名义运行
rccript
。虽然与最初的问题不太相关(它指的是在Ubuntu中运行,而不是在Mac OS X中运行),但我得说,这结束了我长达数小时的沮丧搜索。即使在修改了库文件所有权之后,我也无法让MAMP正确地包含核心库(比如stats),尽管它可以很好地加载RJSONIO。奇怪的无论如何,注释这些行可以让MAMP执行的R脚本找到以前找不到的DYLIB,这可能是stats之类的包的依赖项。谢谢分享!
png( "<Image Location>/samplePlot.png")
hist( sample( 1:10, 100, replace = TRUE), main= Sys.time(), lwd = 5)
dev.off()
<?php
exec("\usr\bin\Rscript <PATH>/test.R", $output, $result);
echo $output;
echo $result
?>
Array2
exec("/usr/bin/Rscript <PATH>/test.R");
$e = exec("\usr\bin\Rscript <PATH>/test.R 2>&1");
var_dump($e);