PHP exec()和显示输出

时间:2015-09-23 06:02:46

标签: php arrays exec echo

我已经在网上看到了很多针对我的问题的解决方案,但我不得不承认他们中的大部分都不适合我。要么他们没有输出任何东西,甚至打破了我的程序中的上传功能,实际上工作正常。我为RaspberryPi编写了一个小脚本,使人们可以通过http上传一个hex文件,并使用avrdude自动编译。也许我只是太愚蠢而无法弄明白。

<?php
$target_dir = "upload/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$all_ok = 1;

    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], "upload/upload.hex")) {
        echo "Die Datei ". basename( $_FILES["fileToUpload"]["name"]). " wurde hochgeladen."."<br>";
        $all_ok=1;
    } else {
        $all_ok == 0;
        echo "Sorry, während dem Upload ist ein Fehler aufgetreten!"."<br>";
    }

    if ($all_ok == 1){
        $result = exec("/usr/bin/avrdude -c gpio -p m328p /var/www/upload/upload.hex -Uflash:w:/var/www/upload/upload.hex 2>&1", $output, $return_var);
        $result_array=explode(' ',$result);
        echo "Output: ".$result_array."<br>";
        echo "Exit status: ".$return_var."<br>";
    } else {
        echo "Sorry, während dem Kompilieren ist ein Fehler aufgetreten!";
    }   
?>

这是我的程序的当前版本,遗憾的是它不会显示任何内容

  

Die Datei blink.hex wurde hochgeladen。

     

输出:数组

     

退出状态:0

我认为问题就在附近

$result_array=explode(' ',$result);
        echo "Output: ".$result_array."<br>";

这是我最近的徒劳,希望有人会启发我;)

2 个答案:

答案 0 :(得分:0)

$all_ok == 0;

应该是

$all_ok = 0;

答案 1 :(得分:0)

<强> exec()

  

exec(string $ command [,array&amp; $ output [,int&amp; $ return_var]])

这意味着第二个参数是您的输出数组。所以不要将exec分配给任何变量只需使用

 exec("/usr/bin/avrdude -c gpio -p m328p /var/www/upload/upload.hex -Uflash:w:/var/www/upload/upload.hex 2>&1", $output, $return_var);

print_r($output);
 $result_array=explode(' ',$output);
        echo "Output: ".$result_array."<br>";
        echo "Exit status: ".$return_var."<br>";