通过Python/R/外部程序在Apache/PHP中启用临时文件创建和使用 - 最佳选项

2 投票
1 回答
547 浏览
提问于 2025-04-16 15:57

我有一个用Python和R写的脚本,这个脚本用来生成一个图形。实际的图形是由R生成的,可以保存为PNG格式的图片。在我本地机器上测试的时候一切都很好,因为文件夹权限设置得当,但现在我需要在网上运行这个脚本。我有一个Apache/PHP的接口,它会把用户的数据发送给Python脚本,然后Python脚本再和R一起计算出图形。

目前,R无法在Apache上保存这个图片。我想知道,怎样才能让像R和Python这样的外部程序创建临时文件?接下来,我需要这个图片显示出来,然后在PHP会话结束时删除它。

虽然有一些方法可以让Python或R访问文件,但这对我来说不够好。我的问题是关于Apache中客户端和服务器之间的工作方式:假设程序X是由PHP调用的,怎样才能让程序X存储并发送图片、文本或其他东西给PHP,并且该怎么实现呢?

创建一个可以被服务器访问的文件夹并赋予完全权限,听起来像是一个安全隐患。

1 个回答

1

在R语言中,你可以用tempfile来生成临时文件的名字。之后你可以用file.remove来删除这个文件,不过听起来最好是通过PHP代码来删除(如果你想在PHP会话结束时删除的话)。

plot_file <- paste(tempfile(tmpdir = "some_dir_with_write_permission"), "png", sep = ".")

png(plot_file)
plot(1:10)
dev.off()

#later on ...
file.remove(plot_file)

撰写回答