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

import RPi.GPIO as G
import time

G.setup(18, G.OUT)
G.output(18, True)
G.output(18, False)


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:

<script type="text/javascript">
function func()
    <div style="text-align:center">
    <h1>Raspberry Pi GPIO</h1>
    <input type="button" value="call .py" onclick="func()">

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


2 Answers 2


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


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

pi.set_mode(LED, pigpio.OUTPUT)

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

pi.stop() # Disconnect from local Pi.

You need to give everyone the right to execute

sudo chmod 750 /path/to/cgi-bin/test.py
  • This command does not give everyone the right to execute. Only to group members and the owner.
    – techraf
    Jan 4, 2017 at 7:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.