无法从 PHP 文档执行 Python 脚本
Can't execute Python script from PHP document
我正在 运行 在我的 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>
<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 用于交付 Documents and Strings
,如果你想要某种控制和 API 从 nodejs 和 https://www.npmjs.com/package/rpi-gpio 包开始。这样一来,您就可以为可靠的自动化环境创造一个空间
这对我有用:
test.php
<?php
echo shell_exec("python test.py");
?>
test.py
f = open("test.txt", "a+")
f.write("hiya buddy!!\n")
f.close()
print "some output"
这是我来自 /var/www/html
的相关 ls -l
输出:
jason@Jason-one /var/www/html $ ls -l
-rw-r--r-- 1 jason jason 44 Sep 20 18:12 test.php
-rwxr-xr-x 1 jason jason 82 Sep 20 17:44 test.py
-rw-rw-rw- 1 jason jason 38 Sep 20 18:15 test.txt
由于我的笔记本电脑上没有 GPIO 引脚,我决定写入一个文件作为测试。请注意,由于我在 test.py
.
上设置权限的方式,我不必使用 sudo
我正在 运行 在我的 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>
<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 用于交付 Documents and Strings
,如果你想要某种控制和 API 从 nodejs 和 https://www.npmjs.com/package/rpi-gpio 包开始。这样一来,您就可以为可靠的自动化环境创造一个空间
这对我有用:
test.php
<?php
echo shell_exec("python test.py");
?>
test.py
f = open("test.txt", "a+")
f.write("hiya buddy!!\n")
f.close()
print "some output"
这是我来自 /var/www/html
的相关 ls -l
输出:
jason@Jason-one /var/www/html $ ls -l
-rw-r--r-- 1 jason jason 44 Sep 20 18:12 test.php
-rwxr-xr-x 1 jason jason 82 Sep 20 17:44 test.py
-rw-rw-rw- 1 jason jason 38 Sep 20 18:15 test.txt
由于我的笔记本电脑上没有 GPIO 引脚,我决定写入一个文件作为测试。请注意,由于我在 test.py
.
sudo