我已经在网上看到了很多针对我的问题的解决方案,但我不得不承认他们中的大部分都不适合我。要么他们没有输出任何东西,甚至打破了我的程序中的上传功能,实际上工作正常。我为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>";
这是我最近的徒劳,希望有人会启发我;)
答案 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>";