在Raspberry Pi上托管Apache服务器,目的是通过一个简单的中继打开一盏灯,远程嵌入HTML中的PHP无法正


Hosting an Apache server on a Raspberry Pi with the aim to turn on a light via a simple relay remotely embedded PHP in HTML not functioning

我正在主持一个基本网站,该网站显示一个简单的ON/OFF开关,以便分别使用sudo python lighton.pysudo python lightoff.py打开连接到继电器的LED条。在终端中运行此命令运行良好,但当我尝试从另一台计算机本地访问它时,我按下的按钮没有响应。我的Python可以工作,我的HTML可以工作,因此我可以认为我的PHP有问题。

<html>
<head>
</head>
<?php
if(isset($_POST['LightON']))
{
    exec("sudo python /home/pi/lighton.py");
}
if (isset($_POST['LightOFF']))
{
    exec("sudo python /home/pi/lightoff.py");
}
?>
<form method="post" action="">
<ul style="list-style:none;">
<li><button class="btn">Light ON</a></li>
<li></li>
<li></li>
<li><button class="btn"> Light OFF</a></li>
</ul>
</form>
</html> 

我意识到这看起来像是一个简单的权限问题,但我已经将www-data ALL=NOPASSWD: /home/pi/lighton.pywww-data ALL=NOPASSWD: /home/pi/lightoff.py添加到visudo中,但都无济于事。

还有其他建议吗?

试试这个:

<html>
<head>
</head>
    <?php
    if(isset($_POST['light']))
    {
        //Light On
        if($_POST['light'])
            exec("sudo python /home/pi/lighton.py");
        //Light Off
        if(!$_POST['light'])
            exec("sudo python /home/pi/lightoff.py");
    }
    ?>
    <form method="post" action="">
        <ul style="list-style:none;">
            <li><h3>Light On</h3></li>
            <li><input type="submit" name="light" value="true" /></li>
            <li><h3>Light Off</h3></li>
            <li><input type="submit" name="light" value="false" /></li>
        </ul>
    </form>
</html>

这将提交一个名为light的变量,其值为true(亮起)或false(熄灭),只有在发布变量light时才会执行。