proc_open не работает при передаче команды в качестве переменной - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь выполнить команду, используя php. когда я передаю команду в функцию proc_open напрямую, она может выполняться нормально, как это

$descriptorspec = array(
        0 => array("pipe", "r"),
        1 => array("pipe", "w"),
        2 => array("pipe", "w")
    );
    $cwd = '/temp/';
    $env = null;
    $blocking = false;




   echo $process = proc_open("rrdtool graph 4Rw6S0spak2zoPw9.png DEF:LOAD=/var/www/html/rrd/10.10.0.144/fortigate_cpu.rrd:LOAD:AVERAGE DEF:LOAD_max=/var/www/html/rrd/10.10.0.144/fortigate_cpu.rrd:LOAD:MAX DEF:LOAD_min=/var/www/html/rrd/10.10.0.144/fortigate_cpu.rrd:LOAD:MIN AREA:LOAD#9999cc: AREA:LOAD_max#9999cc: COMMENT:'% CPU Now Ave Max\n' LINE1.25:LOAD#0000cc:' ' GPRINT:LOAD:LAST:%6.2lf%s GPRINT:LOAD:AVERAGE:%6.2lf%s GPRINT:LOAD_max:MAX:%6.2lf%s\\n COMMENT:\n HRULE:0#555555 --title='CPU' ", $descriptorspec, $pipe, $cwd,$env);

приведенный выше код работает нормально, и команда выполняется без ошибок, но когда я передавал команду через переменную, она не выполнялась. это код, когда я передаю команду как переменную

$cmd="rrdtool graph 4Rw6S0spak2zoPw9.png DEF:LOAD=/var/www/html/rrd/10.10.0.144/fortigate_cpu.rrd:LOAD:AVERAGE DEF:LOAD_max=/var/www/html/rrd/10.10.0.144/fortigate_cpu.rrd:LOAD:MAX DEF:LOAD_min=/var/www/html/rrd/10.10.0.144/fortigate_cpu.rrd:LOAD:MIN AREA:LOAD#9999cc: AREA:LOAD_max#9999cc: COMMENT:'% CPU Now Ave Max\n' LINE1.25:LOAD#0000cc:' ' GPRINT:LOAD:LAST:%6.2lf%s GPRINT:LOAD:AVERAGE:%6.2lf%s GPRINT:LOAD_max:MAX:%6.2lf%s\\n COMMENT:\n HRULE:0#555555 --title='CPU' "
   $descriptorspec = array(
        0 => array("pipe", "r"),
        1 => array("pipe", "w"),
        2 => array("pipe", "w")
    );
    $cwd = '/temp/';
    $env = null;
    $blocking = false;




   echo $process = proc_open($cmd, $descriptorspec, $pipe, $cwd,$env);

этот код вернул только номер процесса, но файл не создан

...