0

I have test.py file, and it contains GPIO module commands:

#!/usr/bin/python
import RPi.GPIO as G
import time

G.setmode(G.BCM)        
G.setup(18, G.OUT)
G.output(18, True)
time.sleep(3)
G.output(18, False)

G.cleanup()

I want to call this python script for execution when I press button on my web page. My index.html contains javascript to call .py for execution:

<html>
<head>
<script type="text/javascript">
function func()
{
    document.location="cgi-bin/test.py";
}
</script>
</head>
<body>
    <div style="text-align:center">
    <h1>Raspberry Pi GPIO</h1>
    <form>
    <input type="button" value="call .py" onclick="func()">
    </form>
    </div>
</body>
</html>

Looks like problems are permissions, so when I click on the button, apache2 retrieves code 500 - Internal error. Execution of test.py from bash with sudo command works fine.

Is there any way to set these permissions, so the apache2 can successfully call python script that contains GPIO commands? Thanks

hideburn
  • 137
  • 2
  • 9

2 Answers2

0

Yes, there are numerous ways. If you google I'm sure you will find them.

However I don't think it'll be a worthwhile effort - if you wait a week or so there should be an update to the RPi.GPIO module to allow its use without requiring root privileges.

There are other Python modules.

My pigpio Python does not require Python to be run as root (it sends requests to a daemon which has the needed privileges).

#!/usr/bin/env python

import time
import pigpio # abyz.me.uk/rpi/pigpio/python.html

LED=18

pi = pigpio.pi() # Connect to local Pi.

pi.set_mode(LED, pigpio.OUTPUT)

for i in range(10):
   pi.write(LED, 1)
   time.sleep(0.2)
   pi.write(LED, 0)
   time.sleep(0.2)

pi.stop() # Disconnect from local Pi.
Ghanima
  • 15,855
  • 15
  • 61
  • 119
joan
  • 71,024
  • 5
  • 73
  • 106
0

You need to give everyone the right to execute

sudo chmod 750 /path/to/cgi-bin/test.py