2013-02-11 80 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