Я пытаюсь выполнить небольшой код R внутри программы PHP. На самом деле код R генерирует тепловую карту и сохраняет рисунок в локальном файле. Когда я запускаю код 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");
?>
Задача ещё не решена.
Других решений пока нет …