簡體   English   中英

從PHP運行./script.sh

[英]Run ./script.sh from PHP

我有一個Web服務器,可以播放Raspberry的音樂,並使用腳本gpio.sh打開LED。 我正在使用mpd,mpc和gpio。

我的/var/www/index.php:

<html><body><?php
echo exec('whoami');
if(isset($_POST['button1']))
{
   shell_exec('mpc play')
   shell_exec('/bin/bash /var/www/gpio.sh');
}
?>
    <form method="post">
    <p align=center>
    OUTPUT (AUDIO) => <button name="button1">PLAY</button>
    </p>
    </form>
    </body></html>

在終端中,我可以成功運行/ bin / bash /var/www/gpio.sh並打開LED。 從網絡服務器“ mpc play”運行,可以播放歌曲,但無法運行gpio.sh。 index.php的所有者是www-data

-rwx ------ 1 www-data www-data 1262 Dec 8 10:45 gpio.sh

-rwx ------ 1 www-data www-data 272 Dec 9 09:39 index.php

我該怎么辦 ? 當我將index.php或gpio.sh的所有者更改為root時,php無法執行。 我的index.php錯誤嗎? 我無法從php執行.sh。 請幫忙。

完美的解決方案是為腳本gpio.sh設置SUID ,但不幸的是,就 gpio.sh而言, 您不能這樣做。

您有三種選擇:

  • 您可以將腳本轉換為“ C ++”應用程序,然后設置SUID
  • 您可以為python使用一些GPIO庫,這些庫不強制由root使用,例如: pigpio
  • 您可以為python解釋器設置SUID,但是我不確定總體上它的好主意

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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