从php系统调用gnuplot生成绘图?

从php系统调用gnuplot生成绘图?,php,gnuplot,system-calls,Php,Gnuplot,System Calls,因此,我使用一个php程序读取一个文件,进行一些更改,然后将其写入一个新文件。之后,我使用系统调用调用gnuplot: system('cat sarx.conf | /usr/bin/gnuplot'); sarx.conf具有生成绘图的gnuplot命令。问题是,如果从命令行(在linux服务器上)运行我的php,它会生成映像并将其存储在磁盘上。但是当我在我的浏览器上运行php做同样的事情时,它会生成图像,并尝试在浏览器上吐出图像,而不实际将其存储在磁盘上 我尝试过的事情: 我想我可能在权

因此,我使用一个php程序读取一个文件,进行一些更改,然后将其写入一个新文件。之后,我使用系统调用调用gnuplot:

system('cat sarx.conf | /usr/bin/gnuplot');
sarx.conf
具有生成绘图的gnuplot命令。问题是,如果从命令行(在linux服务器上)运行我的php,它会生成映像并将其存储在磁盘上。但是当我在我的浏览器上运行php做同样的事情时,它会生成图像,并尝试在浏览器上吐出图像,而不实际将其存储在磁盘上

我尝试过的事情:

  • 我想我可能在权限设置方面有问题,但没有帮助

  • 我还硬编码了希望图像位于
    sarx.conf
    中的路径。那也没用

  • 我还试着在tmp目录中查找它——不走运


  • 有没有人对我如何让它工作有什么想法?我需要将此图像存储在磁盘上,以便我的网站可以抓取它以稍后显示绘图。有什么php工具可以抓取图像并将其写入磁盘吗?

    gnuplot有一个很棒的LGPL许可的php接口:

    以下是您可以执行类似操作的方法:

    $my_file = tempnam();
    $handle = popen('gnuplot', 'w');
    fwrite($this->ph, "Run some gnuplot commands here\n");
    fwrite($this->ph, "set term png\n");
    fwrite($this->ph, "set output ".$my_file."\n");
    fwrite($this->ph, "replot\n");
    flush($handle);
    pclose($handle);
    header('Content-Length: '.filesize($my_file));
    header('Content-Type: image/png');
    print file_get_contents($my_file);
    unlink($my_file);
    

    好吧,如果它对将来的人有帮助,我会让它工作的。这就是我使用的:exec('catsarx.conf |/usr/bin/gnuplot');并确保文件夹是可写的。最妙的是,它会覆盖文件,因此,如果您在网页上进行绘图之类的操作,每秒钟都会接收新数据,那么您可以让php指向定义的路径并抓取图像。我在做热图!!