Da hier immer wieder Probleme / Fragen bezüglich des schaltens von GPIO's auftauchen und ich es langsam leid bin das immer wieder zu wiederholen sowie zu begründen wieso shell_exec(); Mist ist, verfasse ich hier mal eine kurze Zusammenfassung und Erläuterung wie es richtig geht.
Ich zeige euch hier auch Anwendungsbeispiele sowie Code. Ich schneide hier aber auch nur einige hierfür relevante Grundlagen kurz an - die allgemeinen Grundlagen sind aber selbstverständlich umfassender..
Fragen, Anregungen usw bitte im Diskussions-Thread stellen!
[Blocked Image: http://raspberrypi.roxxs.org/UnderConstruction.jpg]
Under Construction
[hr]
[hr]
[an=Index][/an]Index:
- [al=Intro]Einführung[/al]
- [al=Options]Möglichkeiten[/al]
- [al=FirstDescription]Beschreibung 1.Möglichkeit[/al]
- [al=SecondDescription]Beschreibung 2.Möglichkeit[/al]
- [al=WebsiteBasics]Grundlage einer gültigen Webseite[/al]
- [al=PHPBasics]Grundlagen PHP[/al]
- [al=FirstCode]Code zur 1.Möglichkeit[/al]
- [al=AdvancedFirstCode]Fortgeschrittener Code zur 1.Möglichkeit[/al]
- [al=SecondCode]Code zur 2.Möglichkeit[/al]
- [al=AdvancedSecondCode]Fortgeschrittener Code zur 2.Möglichkeit[/al]
- [al=][/al]
- [al=][/al]
- [al=Changelog]Changelog[/al]
[hr]
[hr]
[an=Intro][/an]Einführung:
Ein Webserver läuft i.d.R. über einen bestimmten Benutzer: www-data
Dieser Benutzer hat Standardmäßig keine Rechte die Hardware zu beeinflussen. Auch haben normale Benutzer allgemein kein Recht auf andere Benutzerverzeichnisse zuzugreifen.
Generell ist es so das normale Benutzer nicht auf die Verzeichnisse anderer Benutzer zugreifen dürfen - das wäre unsicher und uncool. Der www-data Benutzer sieht also nicht die Dateien in /home/pi/ da er darauf nicht zugreifen kann.
Auch ist wichtig das der Webserver das Recht besitzt die Dateien zu lesen, evtl. sogar in seinem DocumentRoot Verzeichnis zu schreiben. Allgemein erleichtert es vieles wenn einfach alle Dateien und Verzeichnisse im DocumentRoot Verzeichnis dem Webserver Benutzer gehören.
DocumentRoot ist eine Einstellung von apache2: Das root-Verzeichnis ab dem die Dateien und Verzeichnisse über den Webserver ansprechbar sind. Nicht zu verwechseln mit dem Benutzerverzeichnis von root.
Seit Jessie ist DocumentRoot /var/www/html/ vorher war es noch /var/www/. Wenn ihr also zum Beispiel http://raspberrypi/index.html aufrufen möchtet dann muss die Datei /var/www/html/index.html existieren. Wenn ihr einen Ordner /var/www/html/bla/ erstellt könnt ihr diesen über http://raspberrypi/bla/ ansurfen.
Bezüglich Besitzerrechte siehe:
https://wiki.ubuntuusers.de/Rechte/
https://wiki.ubuntuusers.de/chown/
Es reicht i.d.R. das der Webserver Lese-Rechte besitzt.
Ausführ-Rechte wie sie oft in irgendwelchen Blogs beschrieben werden sind überhaupt nicht nötig und machen auch gar kein Sinn, da die Dateien dem Interpreter direkt übergeben werden. "chmod 755" oder höher sind also nur Bequemlichkeit aber unnötig!
In der Regel reicht es nach erstellen/hochladen eurer Dateien nur den Besitzer auf www-data zu ändern:
Das " -R " sorgt dafür das auch Unterverzeichnisse betroffen sind: Recursive. www-data:www-data ... das erste ist Benutzer das zweite ist Gruppe. Da steht aber auch alles im bereits erwähnten Link bezüglich chown noch mal beschrieben.
Bei Raspbian ist es so das der Benutzer pi bereits Mitglied in einer bestimmten Gruppe ist um die GPIO's beeinflussen zu können (also nicht nur auszulesen sondern auch zu setzen). Diese System-Gruppe heißt: gpio
Desweiteren darf der Benutzer pi ohne Eingabe eines Passwords und uneingeschränkt sudo verwenden.
Diese besonderen Umstände gelten aus Sicherheitsgründen nicht für den Benutzer www-data und das ist i.d.R. auch gut so.
Wenn ihr euren PI ausschließlich (wirklich!) nur in eurem Lokalen Netzwerk (LAN) verwenden wollt und diesen auf gar keinen Fall übers Internet zugänglich macht, dann besteht für euch kein so großes Sicherheitsproblem.
Aber die Erfahrung hat gezeigt das gerade Anfänger doch irgendwie den PI übers Internet ansprechen wollen, oder später nicht mehr an dieses Sicherheitsproblem denken und in ein paar Wochen/Monaten dann doch eine Portweiterleitung einrichten.... Ich möchte hier jetzt aber nicht wirklich ausführlicher über Sicherheitskonzepte quatschen, das würde denk ich den Rahmen sprengen.
Deshalb an dieser Stelle nur so viel: Es ist eine sehr sehr schlechte Idee dem www-data Benutzer uneingeschränkten Zugriff via sudo zu geben! Macht das bitte auf gar keinen Fall!
Wie es eingeschränkt dennoch möglich ist beschreibe ich weiter unten. (sudo webscript)
Standardmäßig ist es auch so das der Webserver, zum Beispiel apache2, eine Logdatei für Fehler hat. Wenn ihr also Probleme in irgendeiner Form habt dann prüft diese Logdatei: /var/log/apache2/error.log
[hr]
[hr]
[an=Changelog][/an]Changelog