2011-08-03 83 views
4

因此,我正在使用php程序來讀取文件,進行一些更改,然後將其寫入新文件。在那之後,我打電話gnuplot的,使用系統調用:系統調用gnuplot從PHP生成劇情?

system('cat sarx.conf | /usr/bin/gnuplot'); 

sarx.conf有gnuplot的命令生成的情節。問題是如果從命令行(它在Linux服務器上)運行我的PHP,它會生成映像並將其存儲在磁盤上。但是當我通過在我的瀏覽器上運行php來做同樣的事情時,它會生成圖像並嘗試在瀏覽器上吐出來,而不實際存儲在磁盤上。

事情我嘗試:

  1. 我,雖然我可能已經與權限設置問題,但它並沒有幫助。

  2. 我也硬編碼我想要圖像在sarx.conf的路徑。這也沒有幫助。

  3. 我也試過在tmp目錄下找它---沒有運氣!

有沒有人有任何想法,我該如何得到這個工作?我需要將此圖像存儲在磁盤上,以便我的網站可以抓住它以稍後顯示劇情。有沒有什麼PHP的東西可以抓住圖像並將其寫入磁盤?

+0

好吧,我得到它的工作,如果它可以幫助別人的未來 我使用的是: exec('cat sarx.conf |/usr/bin/gnuplot'); 並確保該文件夾是可寫的。整潔的東西它會覆蓋文件,所以如果你正在做網頁上的繪圖這樣的事情,那麼你可以讓PHP指向一個明確的路徑並獲取圖像。我在做熱身貼圖! – trailblazer

回答

1

有一個偉大的LGPL許可的PHP接口GNUPLOT這裏:http://www.liuyi1.com/PHP-GNUPlot/

這裏是你怎麼會做同樣的事情:

$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);