我正在尝试在php程序中执行一个小的R代码。实际上,R代码生成热图并将图保存在localfile中。当我从命令行运行R代码时,它工作并保存图像文件,如下所示,
Rscript /var/www/html/ani/Rcode/anat.R
但是当从php调用代码时,我无法执行此任务。我尝试使用一些方法根据其他帖子调用代码,
exec("/usr/bin/Rscript /var/www/html/ani/Rcode/anat.R");
和
system("Rscript /var/www/html/ani/Rcode/anat.R");
它没有用。所以任何人都可以帮我解决这个问题......谢谢。
R代码,
library(gplots)
library(RColorBrewer)
dat <- read.csv("/var/www/html/ani/file.csv")
dat_matrix <- data.matrix(dat)
colors = c(seq(-2,-1,length=100),seq(-1,1,length=100),seq(1,2,length=100))
my_palette <- colorRampPalette(c("green","black","red"))(n = 299)
png("/var/www/html/ani/Rcode/map.png")
heatmap.2(dat_matrix, dendrogram="none", Rowv=FALSE, Colv=FALSE, col = my_palette, breaks=colors, scale="none", key=TRUE, density.info="none", trace="none", labRow=FALSE, symm=F,symkey=T,symbreaks=T)
dev.off()
PHP,
<?php
.
.
for ($i=0;$i<=$len;$i++)
{
$id=$locus[$i];
$id=trim($id);
$dbo = new PDO($dbc, $user, $pass);
$sql = "SELECT * FROM anatomy WHERE locus_id='$id'";
$qry = $dbo->prepare($sql);
$qry->execute();
while ($row = $qry->fetch(PDO::FETCH_ASSOC))
{
fputcsv($data, $row);
chmod("file.csv",0777);
}
}
exec("/usr/bin/Rscript /var/www/html/ani/Rcode/anat.R");
?>