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() も使用しましたが、同じエラーが発生しました: Warning: passthru() [function.passthru]: Cannot execute a blank command in /Library/WebServer/Documents/serverSide2.php on line 8

ただし、ターミナルを使用してコードが機能しているかどうかを確認したので、次のコードを入力し 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とバックティック演算子を使用するのは冗長です。基本的に、どちらも同じことを行います。バックティック演算子は、実際にはその内容をシェル コマンドとして実行し、コマンドの出力を返します。execしたがって、コマンドが何も出力しない場合は、実際には空の文字列で呼び出します。

于 2013-02-11T22:55:37.447 に答える