无法从PHP文档执行Python脚本

时间:2015-09-16 01:45:58

标签: php python apache raspberry-pi raspbian

我在Raspberry Pi上的Apache服务器上运行PHP文档,我希望它在单击按钮时运行文件。我在命令下放了一些echo命令来使文件运行并打印出来,但文件没有运行。 index.php文件和lightson.py以及lightsoff.py文件都在同一目录下( / var / www ),我添加了#!/ usr / bin / env python < / b>到两个文件的顶部,并使用 chmod + x lightson.py 使它们可执行。如果我从shell运行命令它可以正常工作并使用与文件中完全相同的命令打开灯,但它不会运行命令。代码:

<html>
<head>
<title>Light Controller</title>
</head>


<?php
if (isset($_POST['LightON']))
{
shell_exec("sudo python /var/www/lightson.py");
echo("on");
}
if (isset($_POST['LightOFF']))
{
shell_exec("sudo python /var/www/lightsoff.py");
echo("Off");
}
?>

<form method="post">
<button name="LightON">Light ON</button>&nbsp;
<button name="LightOFF">Light OFF</button><br><br>
</form> 


</html>

1 个答案:

答案 0 :(得分:2)

正如您所说,您正在运行apache->php->shell_exec(SUDO..)

所以apache用户必须在sudoers文件中,最好不要给apache sudo而不是给apache(www-data)用户权限来运行你的python程序

在你的python脚本中放置第一行:#!/usr/bin/env python所以脚本知道用它打开它的程序..

然后

更改组:

chgrp www-data /path/to/python-script.py

make it executabel

chmod +x /path/to/python-script.py

试试吧

shell_exec("/path/to/python-script.py");

我希望它有效;)

TIPP:Apache和PHP用于提供Documents and Strings,如果你想要某种控制和API启动nodejs和https://www.npmjs.com/package/rpi-gpio包。通过这种方式,您将拥有一个可用于实体自动化环境的场所