3

我正在尝试在 PHP 中使用 GNUPLOT 绘制正弦图,但是当我exec用来绘制该图时,出现此错误:

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

这是我的代码:

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 它工作正常并给了我情节。

任何我知道我该怎么做?

4

2 回答 2

5

您使用了错误的语法。

使用并将exec命令行编写为字符串文字:

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

使用反引号,完全涉及exec

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

使用您已经拥有的代码,反引号会导致执行命令并将其输出传递给exec. 由于此命令行不产生任何输出,exec因此抱怨它无法执行空白命令。

于 2013-02-11T22:54:31.270 回答
3

使用两者exec和反引号操作符是多余的——基本上,它们都做同样的事情。反引号运算符实际上将其内容作为 shell 命令执行并返回命令的输出。因此exec,如果您的命令没有输出任何内容,您实际上会使用空字符串进行调用。

于 2013-02-11T22:55:37.447 回答