2011-08-03 7 views
4

그래서 PHP 프로그램을 사용하여 파일을 읽고 변경 한 다음 새 파일에 씁니다. 그 후, 나는 시스템 호출을 사용하여,의 gnuplot 전화 :시스템에서 플롯을 생성하기 위해 php에서 gnuplot을 호출합니까?

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

sarx.conf은의 gnuplot의 플롯을 생성하는 명령이 있습니다. 문제는 이미지를 생성하고 디스크에 저장하는 명령 줄 (리눅스 서버에있는)에서 php를 실행하면 문제가 발생합니다. 그러나 브라우저에서 PHP를 실행하여 동일한 작업을 수행 할 때 이미지를 생성하고 실제로 디스크에 저장하지 않고 브라우저에서 PHP를 실행하려고합니다.

상황이 내가 시도 :

  1. 에게 I를 내가 권한 설정에 문제가 있었 수도 있지만 도움이되지 않았지만.

  2. 나는 또한 이미지가 원하는 위치의 경로를 하드 코딩했다. sarx.conf. 그것은 어느 쪽도 도움이되지 않았다.

  3. 나는 또한 tmp 디렉토리에서 그것을 찾으려고 노력했다. --- 행운이 없다 !!

아무에게도 어떻게 작동시킬 수 있습니까? 나중에 웹 사이트에서 그 그림을 보여주기 위해이 이미지를 디스크에 저장해야합니다. 이미지를 잡고 디스크에 쓸 수있는 PHP 물건이 있습니까? http://www.liuyi1.com/PHP-GNUPlot/ 여기

가 비슷한 일을 할 수있는 방법은 다음과 같습니다 : 여기의 gnuplot 수있는 좋은 LGPL 라이센스 PHP 인터페이스가있다

+0

확인 이것은 내가 사용한 것입니다 : exec ('cat sarx.conf |/usr/bin/gnuplot'); 폴더에 쓸 수 있는지 확인하십시오. 그것은 파일을 덮어 깔끔한 물건 그래서 만약 당신이 새로운 데이터를 초 정도 걸리는 웹 페이지에 플롯과 같은 일을하고 있다면 당신은 명확한 경로를 가리키고 이미지를 움켜 잡을 PHP를 가질 수 있습니다. 나는 heatmaps를하고 있었다! – trailblazer

답변

1

내가 그것을 누군가가 미래에 도움이된다면 일을 가지고

$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); 
관련 문제