打印C程序回音的行并在PHP Web服务器上显示

打印C程序回音的行并在PHP Web服务器上显示,php,c,exec,echo,Php,C,Exec,Echo,我在吃覆盆子。 我有一个C编译的程序,它返回一些带有值的行:ie printf("Input BP : CF \n"); 我有一个使用php的Web服务器,它在特定的URL上执行C程序,我想显示C程序返回的行。 我在windows上成功地实现了一些功能,但在Rspi上它不起作用 以下是PHP源代码: else if ($cmd=='temp2') { echo exec("sudo ./spa5");

我在吃覆盆子。 我有一个C编译的程序,它返回一些带有值的行:ie

printf("Input BP : CF \n");
我有一个使用php的Web服务器,它在特定的URL上执行C程序,我想显示C程序返回的行。 我在windows上成功地实现了一些功能,但在Rspi上它不起作用

以下是PHP源代码:

        else if ($cmd=='temp2')     {
            echo exec("sudo ./spa5");                                       
        }
        else if ($cmd=='err')       {
             exec("sudo ./spa5",$last_line,$retval);                                        /           //  $last_line = system("./spa5 2>&1", $retval);
            //$last_line = system("./spa5 ", $retval);
        //  print_r ($last_line)."</BR> ";
        //  echo ($retval)."</BR> ";
            while( list(,$row) = each($last_line) ) {
              echo $row. "<br />";
        } 
else如果($cmd=='temp2'){
echo exec(“sudo./spa5”);
}
else if($cmd=='err'){
exec(“sudo./spa5”,“最后一行,$retval);//$last\u行=系统(“./spa5 2>&1”,“$retval”);
//$last_line=系统(“./spa5”,$retval);
//打印(最后一行)。“
”; //回声($retval)。“
”; while(列表(,$行)=每个($最后一行)){ echo$row.“
”; }
有些事情是错的,但在哪里呢?
我在Web服务器Apache和NGINX上进行了测试,在使用php exec(我正在使用NGINX)运行C程序时遇到了类似的问题,该程序控制着我的Raspberry上的射频发射机。
我使用了基于以下内容的C程序 可能存在身份验证问题,但我只能通过执行以下步骤来解决。如果没有Python,我可以执行php,但既没有结果也没有错误。
我绕了一小段路,使用Python脚本运行C程序,现在它可以工作了:
Python脚本由一个用户(在sudo组中)拥有:users,permissions 744

#!/usr/bin/python3.5
import subprocess
import sys
from subprocess import call
if len(sys.argv) != 2:
    print('invalid numbers of arguments. Script will be terminated.')
else:
    print('used argument:', sys.argv[1])
    subprocess.call(["/path/to/myC_Program", sys.argv[1]]);        
要测试Python脚本,可以使用以下命令,而不是subprocess.call

# subprocess.check_call(["/path/to/myC_Program 1"]);  this returns "no such file"     
# subprocess.check_call(["/path/to/myC_Program", "1"]);this returns the echo of the C-program"`

sudo-visudo

我加了
www-data-ALL=(ALL)NOPASSWD:/path/to/myC_程序,NOPASSWD:/path/to/mypythonscript.py

我的php文件“light_via_browser.php”(由root拥有,权限644)使用参数“temp”调用Python脚本:


灯光控制
div[type=“normal”]{
清除:左;
宽度:32vw;
高度:1vw;
背景色:透明;
}
div[type=“inp\u left1”]{
高度:11vw;
宽度:11vw;
填充:0vw;
浮动:左;
左边距:4vw;
显示:内联;
边框:1px纯银;
背景颜色:灰色;
}
div[type=“inp_left2”]{
高度:11vw;
宽度:11vw;
填充:0vw;
浮动:左;
左边距:1vw;
显示:内联;
边框:1px纯银;
背景颜色:灰色;
}
输入[type=“submit”]{
宽度:6vw;
字体大小:4vw;
左边距:2.5vw;
利润率最高:2vw;
填料:1vw 1vw;
字体系列:Roboto,无衬线;
字体大小:400;
颜色:青绿色;
边框:1px纯银;
背景图像:线性渐变(顶部,gainsboro 0%,白色90%);
边界半径:2vw;
}
照明控制:

我在使用php exec(我使用的是nginx)时遇到了类似的问题,C程序控制我的Raspberry上的RF发射机 我使用了基于以下内容的C程序 可能存在身份验证问题,但我只能通过执行以下步骤来解决。如果没有Python,我可以执行php,但既没有结果也没有错误。
我绕了一小段路,使用Python脚本运行C程序,现在它可以工作了:
Python脚本由一个用户(在sudo组中)拥有:users,permissions 744

#!/usr/bin/python3.5
import subprocess
import sys
from subprocess import call
if len(sys.argv) != 2:
    print('invalid numbers of arguments. Script will be terminated.')
else:
    print('used argument:', sys.argv[1])
    subprocess.call(["/path/to/myC_Program", sys.argv[1]]);        
要测试Python脚本,可以使用以下命令,而不是subprocess.call

# subprocess.check_call(["/path/to/myC_Program 1"]);  this returns "no such file"     
# subprocess.check_call(["/path/to/myC_Program", "1"]);this returns the echo of the C-program"`

sudo-visudo

我加了
www-data-ALL=(ALL)NOPASSWD:/path/to/myC_程序,NOPASSWD:/path/to/mypythonscript.py

我的php文件“light_via_browser.php”(由root拥有,权限644)使用参数“temp”调用Python脚本:


灯光控制
div[type=“normal”]{
清除:左;
宽度:32vw;
高度:1vw;
背景色:透明;
}
div[type=“inp\u left1”]{
高度:11vw;
宽度:11vw;
填充:0vw;
浮动:左;
左边距:4vw;
显示:内联;
边框:1px纯银;
背景颜色:灰色;
}
div[type=“inp_left2”]{
高度:11vw;
宽度:11vw;
填充:0vw;
浮动:左;
左边距:1vw;
显示:内联;
边框:1px纯银;
背景颜色:灰色;
}
输入[type=“submit”]{
宽度:6vw;
字体大小:4vw;
左边距:2.5vw;
利润率最高:2vw;
填料:1vw 1vw;
字体系列:Roboto,无衬线;
字体大小:400;
颜色:青绿色;
边框:1px纯银;
背景图像:线性渐变(顶部,gainsboro 0%,白色90%);
边界半径:2vw;
}
照明控制: