php - 无法从 PHP 文档执行 Python 脚本

标签 php python apache raspberry-pi raspbian

我在我的 Raspberry Pi 上的 Apache 服务器上运行一个 PHP 文档,我希望它在单击按钮时运行一个文件。我在命令下放置了一些 echo 命令以使文件运行并打印出来但文件没有运行。 index.php 文件和 lightson.py 和 lightsoff.py 文件都在同一目录 (/var/www) 中,我添加了 #!/usr/bin/env python 到两个文件的顶部,并使用 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>

最佳答案

正如您所说,您正在像 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

让它执行

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

尝试一下

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

我希望它有效;)

TIPP:Apache 和 PHP 用于交付文档和字符串,如果您想要某种控制和 API,请从 nodejs 和 https://www.npmjs.com/package/rpi-gpio 开始包裹。这样,您就可以在一个地方放置可靠的自动化环境

关于php - 无法从 PHP 文档执行 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598420/

相关文章:

php - 哪个更快 : in_array or database queries?

php - 将JavaScript数组数据插入MySQL数据库的问题

php - 如何在 magento 1.7.0.2 的前端显示 PayPal 支付标准选项?

PHP 服务器信息

java - 如何使用单个命令在 UNIX 文件系统中提取 JAR 并使用 JAR 命令指定其目标目录?

apache - 无法在 XAMPP 中启动 Apache

python - 将文本附加到文件?

python - if/else 语句与字典

java - 带有 apache mod_proxy_wstunnel 的 Websocket 到带有 javax.servlet.request.X509Certificate 的 tomcat

php - (notice) child pid XXXX exit signal Segmentation fault (11), possible coredump in/etc/apache2