警告:exec()[function.exec]:无法执行空白命令

时间:2013-02-11 22:50:17

标签: php gnuplot

我试图在PHP中使用GNUPLOT绘制正弦图,但是当我使用exec绘制图形时,我收到此错误:

  

警告:exec()[function.exec]:无法执行空白命令   /Library/WebServer/Documents/serverSide2.php在第8行

这是我的代码:

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

我也使用了passthru()但得到了同样的错误: 警告:passthru()[function.passthru]:无法在第8行的/Library/WebServer/Documents/serverSide2.php中执行空白命令

但是我用终端检查代码是否正常,所以我输入了这段代码: echo "set term png;set xrange[-2*pi:2*pi]; set output 'output.png'; plot sin(x)" | gnuplot 它运作正常,给了我情节。

我知道我该怎么办?

2 个答案:

答案 0 :(得分: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然后抱怨它无法执行空白命令。

答案 1 :(得分:2)

同时使用exec和反引号运算符是多余的 - 基本上,它们都是相同的。反引号操作符实际上将其内容作为shell命令执行,并返回命令的输出。所以你实际上用空字符串调用exec,如果你的命令没有输出任何东西。