目标: 从wordpress页面运行一个简单的Rscript。
设置:
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
我希望得到命令行输出以检查错误。这可能吗?
答案 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中
我知道你发布这个问题需要很长时间,但是我花了很多时间处理类似的问题 - 希望有人可以节省一些时间;)