PHP exec() 并显示输出
PHP exec() and display output
我已经在网上看到了很多针对我的问题的解决方案,但我不得不承认其中大部分都不适合我。他们要么没有输出任何东西,要么甚至破坏了我程序中的上传功能,但实际上工作正常。我已经为 RaspberryPi 编写了一个小脚本,使人们能够通过 http 上传十六进制文件并使用 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.
Output: Array
Exit status: 0
我认为问题出在附近
$result_array=explode(' ',$result);
echo "Output: ".$result_array."<br>";
这是我最近的徒劳做法,希望有人赐教。
$all_ok == 0;
应该是
$all_ok = 0;
exec( string $command [, array &$output [, int &$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>";
我已经在网上看到了很多针对我的问题的解决方案,但我不得不承认其中大部分都不适合我。他们要么没有输出任何东西,要么甚至破坏了我程序中的上传功能,但实际上工作正常。我已经为 RaspberryPi 编写了一个小脚本,使人们能够通过 http 上传十六进制文件并使用 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.
Output: Array
Exit status: 0
我认为问题出在附近
$result_array=explode(' ',$result);
echo "Output: ".$result_array."<br>";
这是我最近的徒劳做法,希望有人赐教。
$all_ok == 0;
应该是
$all_ok = 0;
exec( string $command [, array &$output [, int &$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>";