从wordpress install运行exec()Rscript

时间:2011-12-12 22:27:12

标签: php r amazon-ec2

目标: 从wordpress页面运行一个简单的Rscript。

  • 我正在尝试在加载页面时使用exec()运行Rscript。该脚本从整数1到10创建100个随机样本的直方图,将系统时间写入标题并将数字保存到.png文件。

设置

  • 在Ubuntu EC2微型实例上运行Wordpress安装
  • 已成功安装并通过ssh
  • 进行测试
  • 使用Exec-PHP Wordpress插件,以便可以编写和执行(成功测试)PHP代码

PHP代码(在wordpress页面内)

    <?php 
    echo "This is the Exec-PHP 'Hello World'\n"; 
    echo exec("date");
    ?>

    <?php
    exec("Rscript <PATH>/test.R");
    ?>

    <img src="<Image Location>/samplePlot.png" alt="" title="Sample R" />

Rscript - test.R

    png( "<Image Location>/samplePlot.png")
    hist( sample( 1:10, 100, replace = TRUE), main= Sys.time(), lwd = 5)
    dev.off()

图像文件加载但未更新,表明Rscript从未执行过。我把它分解为问题,但不确定为什么会这样。

我该如何调试?我真的不知道任何PHP,但我尝试了以下内容:

    <?php
    exec("\usr\bin\Rscript <PATH>/test.R", $output, $result);
    echo $output;
    echo $result
    ?>

返回:

Array2

我希望得到命令行输出以检查错误。这可能吗?

2 个答案:

答案 0 :(得分:2)

我认为问题在于你没有指定Rscript的完整路径,而运行PHP / Apache的用户只是不知道在哪里搜索它。

更新exec命令(在Linux上):

exec("/usr/bin/Rscript <PATH>/test.R");

无论如何,我建议稍后为该任务安装littler并(基于此)运行r而不是Rscript,以便让事情运行得更快 - 如果安装,例如。 rApache不是一种选择。

答案 1 :(得分:2)

要了解问题,请尝试:

$e = exec("\usr\bin\Rscript <PATH>/test.R 2>&1");
var_dump($e);

如果你得到类似的东西:dyn.load中的错误(文件,DLLpath = DLLpath,......)...... 您可能需要更新服务器动态库(尝试搜索libfreetype.dylib),或者如果您正在运行MAMP(我是),您需要注释(#)两个未注释的行:/ Applications / MAMP / Library / bin / envvars中

我知道你发布这个问题需要很长时间,但是我花了很多时间处理类似的问题 - 希望有人可以节省一些时间;)