我试图在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
它运作正常,给了我情节。
我知道我该怎么办?
答案 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
,如果你的命令没有输出任何东西。