2015-09-23 72 views
0

我已经在网上看到了很多解决方案,但我不得不承认,他们中的大多数都不适合我。要么他们只是没有输出任何东西,甚至打破了我的程序中的上传功能,实际上工作正常。我为RaspberryPi编写了一个小脚本,使人们可以通过http上传一个十六进制文件,并使用avrdude自动编译它。也许我太愚蠢了解决它。PHP exec()和显示输出

<?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!"; 
    } 
?> 

这是我的程序至极的当前版本可悲的是没有任何显示更多的则

模具Datei blink.hex wurde hochgeladen。

输出:数组

退出状态:0

我认为这个问题是近

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

这是我的最新徒劳的做法某处,希望有人会开导我;)

+0

请问有人能告诉我为什么这会得到downvoted?我不认为这个问题不清楚,无用,也不缺乏研究努力。 另外我想从那些认为我只是发布了我应该没有发布的东西的人的反馈。一个简单的downvote是不够的(至少如果你想我的下一个问题质量提高;)) – farosch

+0

不知道为什么这里有这样的投票文化。也许专注于你到目前为止的两个答案,并与这些人交流。这样你就可以获得声望积分,并且你在论坛上的体验将得到改善。 – foxbeefly

+0

是的,你说得对。感谢@Saty和你,我已经得到了我需要的答案。 :)但是,如果没有任何解释,很快就会让这个问题变得非常令人沮丧。我认为一个没有花时间纠正问题或要求进一步解释问题的人不应该低估,因为他 - 在一纳秒之内 - 看到了让他失望的事情。 – farosch

回答

0

exec()

EXEC(字符串$命令[,阵列& $输出[摘要& $ 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>"; 
+0

耶,这是我从一开始就犯的错误 - 非常感谢你!感谢您的快速回复! – farosch

+0

欢迎@ sehams – Saty

0
$all_ok == 0; 

应该是

$all_ok = 0; 
+0

uups,你是绝对正确的 - 感谢那一个;) – farosch