[英]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文件中,更好的是你不給sudo 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引腳,我決定寫一個文件作為測試。 注意我沒有必要使用sudo
因為我在test.py
上設置權限的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.