2013-02-11 115 views
1

我想要繪製在PHP中使用GNUPLOT正弦曲線執行命令的空白,但是當我使用exec繪製圖表我得到這個錯誤:警告:EXEC()[function.exec]:無法

Warning: exec() [function.exec]: Cannot execute a blank command in /Library/WebServer/Documents/serverSide2.php on line 8

這裏是我的代碼:

exec(`echo "set term png;set xrange[-2*pi:2*pi]; set output 'output.png'; plot sin(x)" | gnuplot`); 

我用中繼()也是,但得到了同樣的錯誤: 警告:中繼()[function.passthru]:無法在/ Library/WebServer的執行命令空白/Documents/serverSide2.php第8行

但是我用終端檢查代碼是否正常工作,所以我輸入了這段代碼: echo "set term png;set xrange[-2*pi:2*pi]; set output 'output.png'; plot sin(x)" | gnuplot 它工作正常,給了我情節。

任何我的想法我該怎麼辦?

回答

4

您正在使用錯誤的語法。

要麼使用exec和寫入命令行作爲一個字符串:

exec('echo "set term png;set xrange[-2*pi:2*pi]; set output \'output.png\'; plot sin(x)" | gnuplot'); 

使用backticks,做涉及exec可言:

`echo "set term png;set xrange[-2*pi:2*pi]; set output 'output.png'; plot sin(x)" | gnuplot`; 

隨着你已經擁有的代碼,反引號會導致該命令被執行並且它的編號爲輸出傳遞給exec。由於該命令行不產生輸出,因此exec會抱怨它無法執行空白命令。

+0

現在它不會再給出錯誤了,但是在運行php文件後它不保存output.png:localhost/server.php – secret 2013-02-11 23:16:20

+0

@Emad:你使用反引號版本嗎?我剛注意到從'exec'版本複製粘貼時,我留下了一些額外的反斜槓。 – Jon 2013-02-11 23:17:21

+0

我使用了兩個版本,即使是更正的反引號版本,但仍然輸出不保存在任何地方。 (它假設保存在本地主機文件夾,但它不) – secret 2013-02-11 23:22:36

2

使用exec和反引號操作符都是多餘的 - 基本上它們都是一樣的。反引號操作符實際上將其內容作爲shell命令執行並返回命令的輸出。所以如果你的命令沒有輸出任何東西,你實際上用一個空字符串調用exec