簡體   English   中英

無法從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>&nbsp;
<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM