Kein Zugriff auf /dev/mem. Versuchen Sie als root läuft auf Raspberry Pi
Ich bin ein Noob mit dem raspberry pi. Habe ich es alle setup-und ich bin versucht, führen Sie eine Datei über den browser mit shell_exec
.
Hier ist der Inhalt des python-Datei:
#! /usr/bin/python
import time
import RPi.GPIO as GPIO
PIN_17 = 17 # Define LED colour and their GPIO pin
GPIO.setmode(GPIO.BCM)
GPIO.setup(PIN_17, GPIO.OUT) # Setup GPIO pin
GPIO.output(PIN_17, True) #Turn on
time.sleep (1) #Wait
GPIO.output(PIN_17, False) #Turn off
GPIO.cleanup() #Useful to clear the board
Habe ich die Datei in das Verzeichnis /home/pi/
genannt trigger_pin.py
Ich versuche, führen Sie die Datei über den browser mit der PHP-Befehl unten in remote.php
:
<?php
$output = shell_exec("cd /home/pi/&& ./trigger_pin.py 2>&1"); //run command
echo "$output"; //output from command
?>
Den Ausgang bin ich immer:
Traceback (most recent call last): File "./trigger_pin.py", line 9, in der GPIO.setup(PIN_17, GPIO.OUT) # Setup GPIO-pin Absturz mit Laufzeitfehler: Kein Zugriff auf /dev/mem. Versuchen Sie als root ausgeführt werden!
InformationsquelleAutor user1503606 | 2015-01-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Standardmäßig wird der Raspberry Pi die GPIO Schnittstelle benötigt superuser ("root") Berechtigungen. Möglicherweise haben Sie einen root-user shell öffnen, daher bei der Ausführung Ihrer Python-Skript funktioniert ohne Probleme von der Kommandozeile aus. In der Erwägung, dass Ihre PHP-Anwendung server wird wahrscheinlich als ein anderer Benutzer.
Den meisten straight-forward-Lösung ist das hinzufügen der PHP application server-Benutzer (z.B.
www-data
)/etc/sudoers
, die einen privilegierten Benutzer.Und dann eskalieren Sie Ihre Berechtigungen mit
sudo
:Wenn Sie dies tun, werden Sie absolut sicher, dass Sie auf Ihre Sicherheit zu prüfen, was Ihre Web-server ausgeführt werden können (D. H., nicht blind Installation von Web-Skripten, die mit der überprüfung der Quell-code).
Alternativ können Sie überarbeiten Sie Ihre Python-Skript zu verwenden pigpio's
pigpiod
- daemon, der läuft mit superuser-Privilegien (so dass Ihre Anwendung nicht zu). Oder Sie können verwenden Sie ein separates tool, die verwendetsetuid
als root laufen wie Quick2Wire ist GPIO-Admin.Finden Sie auch weitere Hilfe bei Raspberry Pi Stack Exchange.
InformationsquelleAutor Jacob Budin
Verwenden Sie diesen Befehl,
InformationsquelleAutor Yatish Prasad