Hey dreamers! Let’s discuss How to run Python script inside PHP under Raspberry Pi? This instruction assumes that the FTP is enabled and the /var/www folder is already writable. You can check here for more details regarding FTP setup.
* How to run Python script in PHP under Raspberry Pi?
1. Create a “raspi-ctrl.php” PHP file in var/www/html, then add the sample code below:
<?php //The $_REQUEST["n"] and $_REQUEST["c"] will serve as python arguments $str = "sudo python /var/www/html/gctrl.py " . $_REQUEST["n"] . " " . $_REQUEST["c"]; exec($str);
The $_REQUEST[“num”] and $_REQUEST[“cmd”] will serve as python arguments and will have a value of either 1 or 0.
2. Next, create a python file named “gctrl.py” in /var/www/html/, then add the code below:
import RPi.GPIO as GPIO import sys GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) #Set specified GPIO pins to OUT gRelayNumList = [4, 17] for pinNum in gRelayNumList: GPIO.setup(pinNum, GPIO.OUT) #Argument values, num will be GPIO list key and cmd will be for GPIO state args = sys.argv num = int(args) cmd = int(args) #Turn ON the relay by setting to output to 0 (relay used during test is active low, 0/False will turn ON a switch) if(cmd == 1): #Turn ON GPIO.output(gRelayNumList[num], 0) elif(cmd == 0): #Turn OFF GPIO.output(gRelayNumList[num], 1)
3. Open the sudoers file using the following command:
sudo nano etc/sudoers.d/010_pi-nopasswd
a. Do not close nano with 010_pi-nopasswd after editing
b. Open another shell and try sudo command after each editing made on 010_pi-nopasswd. This is to make sure that there are no sudo errors
c. Just to repeat, do not close nano yet and always check for sudo errors, as mentioned in b
4. Add the following codes to 010_pi-nopasswd and save it:
pi ALL=(ALL) NOPASSWD: ALL yourLoginUsername ALL=(ALL) NOPASSWD: ALL www-data ALL=(ALL) NOPASSWD: /usr/bin/python /var/www/html/gctrl*
Replace yourLoginUsername with the username you use on your Raspberry Pi.
a. Take note of the points specified in step 3, if 010_pi-nopasswd gets corrupted, sudo will not be available!
5. Open your browser, click the address bar and type the following to call the PHP file:
Note: Replace 192.168.0.116 with the IP address of your Raspberry Pi