我正在主持一个基本网站,该网站显示一个简单的ON/OFF开关,以便分别使用sudo python lighton.py
和sudo 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.py
和www-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时才会执行。