PHP & Apache Docker - Ping per Webseite

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe Community,

    ich habe einen apache & php Server über docker compose installiert. Die gewünschte Webseite zum Starten eines Wake on Lan PCs und pingen vom denselben wird angezeigt, jedoch der php-Code nur teilweise ausgeführt (Testordner werden angelegt, aber weder Ping noch python-Skript ausgeführt). Ich denke es liegt an den Rechten, habe dem Webserver Ordner auch schon alle gegeben (siehe Screenshots), weiß aber nun nicht weiter. Ich wäre euch sehr dankbar für eure Hilfe & Ratschläge

    gekoppelt mit folgender php Datei:

    Ordnerstruktur vorher:

    Ordnerstruktur nachher:


    Webseitenoberfläche:

  • Wenn ich das richtig interpretiere, dann findet er Ping und Python nicht?

    Ist spannend, denn wenn ich den exakt gleichen Befehl so in die Konsole eingebe, ist das kein Problem:



    Was könnte da sein?

    Ich habe auf die Datei wake.py alle Zugriffsrechte gegeben:

  • Außerdem ist es in der Regel immer eine gute Idee, in Skripten den absoluten Pfad bei ausführbaren Dateien (wie dem Python-Interpreter oder ping) anzugeben, um sicherzustellen, dass die auch gefunden werden.

    Da der wirklich relevante Teil des Konstrukts ein Python-Skript ist stellt sich noch die Frage, warum du noch ein PHP-Konstrukt außen rum baust statt direkt serverseitig eine Python-Applikation laufen zu lassen. Dann brauchst du auch kein Apache und kannst die Python-Applikation unter einem User deiner Wahl laufen lassen.

    Gruß, noisefloor

  • Probiere es einmal mit dem gesamtem Path-Angabe

    Code
    exec("/bin/ping -c 4 $ip", $output);

    oder wo immer den ping liegt ;)

    Bzw poste die letzten Zeilen mit dem Fehler aus der /var/log/apache/error.log

    Meine Antwort ist 21 und nicht 42. Oder anders gesagt: 0001 0101 statt 0010 1010

  • Volkmarius Insbesondere von Konsolenausgaben solltest Du keine Bilder zeigen sondern einfach den Text in einen Code-Block in den Beitrag kopieren. Aber auch die Bilder von dem Dateimanager um Rechte usw. zu zeigen, sollten nicht sein. Das macht das alles unnötig schwierig zu lesen, zum Beispiel auf kleinen Bildschirmen (Smartphone & Co). Dateien kann man auch in der Konsole auflisten und dann auch wieder die Ausgabe in einen Code-Block in den Beitragstext kopieren.

    "He who laughs last thinks slowest"

  • Wenn der Apache irgendein Script ausführen können soll, muss man ihm das explizit erlauben.

    Das ist www-data aus guten Gründen verboten.

    Absolute Pfade sind auch vorteilhaft.

    mkdir und Permission denied sagt doch schon einiges.

    404 also nicht gefunden ebenso.

    Hallo fred0815,

    ja danke, das habe ich mir gedacht.

    Ich bin leider nicht so bewandert mit Apache und der expliziten Rechtevergabe!

    Wie und wo vergebe ich diese Rechte?

    Lg

  • Ouch! Ich schreibe hier ja, da auch ich nicht der Meister bin, der vom Himmel gefallen ist :/

    Ich werde weiterhin mein Unwesen im Internet treiben und mache das gerne mündiger :)

  • Probiere es einmal mit dem gesamtem Path-Angabe

    Code
    exec("/bin/ping -c 4 $ip", $output);

    oder wo immer den ping liegt ;)

    Bzw poste die letzten Zeilen mit dem Fehler aus der /var/log/apache/error.log

    Hey juhu01,

    ich habe nun folgendes gemacht. Zuerst mal die absoluten Pfade eruiert:


    Dann die allgemeinen Pfade eingepflegt:

    Folgende Logmeldungen:

    Code
    sh: 1: /usr/bin/python: not found
    sh: 1: /usr/bin/ping: not found
    192.168.178.64 - - [07/May/2024:15:33:03 +0000] "GET /wol.php HTTP/1.1" 302 268 "http://192.168.178.66/WakeOnLan.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
    192.168.178.64 - - [07/May/2024:15:33:03 +0000] "GET /static/styles/styles.css HTTP/1.1" 404 492 "http://192.168.178.66/WakeOnLan.html" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"

    Kommt das "not found" daher, dass Apache nicht die Berechtigung hat, auf die Verzeichnisse zuzugreifen?

    Obwohl der Befehl in der Konsoleneingabe einwandfrei funktioniert:

    Code
    pi@raspberrypi:~ $ /usr/bin/python /home/pi/wake.py 192.168.178.255 A8:A1:59:0C:67:38
    pi@raspberrypi:~ $

    Beste Gürße & Dank

  • Außerdem ist es in der Regel immer eine gute Idee, in Skripten den absoluten Pfad bei ausführbaren Dateien (wie dem Python-Interpreter oder ping) anzugeben, um sicherzustellen, dass die auch gefunden werden.

    Da der wirklich relevante Teil des Konstrukts ein Python-Skript ist stellt sich noch die Frage, warum du noch ein PHP-Konstrukt außen rum baust statt direkt serverseitig eine Python-Applikation laufen zu lassen. Dann brauchst du auch kein Apache und kannst die Python-Applikation unter einem User deiner Wahl laufen lassen.

    Gruß, noisefloor

    Hi noisefloor,


    ich möchte einen PC von außerhalb des Heimnetzes per WakeOnLan starten. Per VPN kann ich bereits mit dem Smartphone ins Heimnetz einloggen. Es wäre besonders angenehm, den PC direkt über eine kleine lokale Webseite starten zu können, anstatt mich am RPI einzuloggen um dann ein Skript dort einzutippen. Oder meinst du das anders bzw. verstehe ich das falsch?

    Grüße

  • Oder meinst du das anders bzw. verstehe ich das falsch?

    Vielleicht, weil ich deine Antwort nicht so richtig verstehe. Also: man kann auch in Python sehr einfach und problemlos web-basierte Applikationen erstellen - ohne PHP und ohne Apache, damit PHP läuft. Das macht besonders immer dann Sinn, wenn die serverseitige Programmlogik in Python umgesetzt ist. Wenn ich deine Anwendung richtig sehe, dient PHP nur dazu, das Python Skript zu starten. Das geht auch ohne PHP.

    Gruß, noisefloor

  • Quote

    ich möchte einen PC von außerhalb des Heimnetzes per WakeOnLan starten. Per VPN kann ich bereits mit dem Smartphone ins Heimnetz einloggen. Es wäre besonders angenehm, den PC direkt über eine kleine lokale Webseite starten zu können, anstatt mich am RPI einzuloggen um dann ein Skript dort einzutippen. Oder meinst du das anders bzw. verstehe ich das falsch?

    Wenn du eh über VPN im lokalem Netz bist. Sende das wake_on_lan vom Handy aus.
    Damit sparst du dir alles laufen zu lassen. Google offeriert dir an die 20 Apps.

    Meine Antwort ist 21 und nicht 42. Oder anders gesagt: 0001 0101 statt 0010 1010

  • Frage rein aus Interesse:

    Warum tut man sich Docker und Co. an ??

    Bitte nicht falsch verstehen, ich respektiere die Nutzung und möchte nicht provozieren.

    Ich lese halt immer wieder von Problemen mit Docker und ich habe vor langer Zeit auch mal damit angefangen aber eben Probleme auf 2 Ebenen machen das Ganze doch sicher komplizierter, oder nicht ??

    ;) Gruß Outi :D
    Pis: 2x Pi B, 1x Pi B+, 1x Pi 2 B in Rente / 2x Pi 3 B (RaspberryMatic / Repetier Server) / 2x Pi Zero 1.2 / 2x Pi Zero 1.3 / 2x Pi Zero W 1.1 / 1x Pi Zero 2 (BW+CUPS/SANE) / 1x Pi 3 B+ (Tests) / 1x Pi 4 B 4GB (Tests) / Pi 400 (BW) / 1x Pi 5 8GB (BW) / 2x Pi Pico / 2x Pi Pico W
    HATs: Sense HAT / HM-MOD-RPI-PCB / RPI-RF-MOD / PiFi DAC+ V2.0 / TV HAT / Pi 5 Kühler HAT / Pimoroni NVMe BASE
    Cams: orig. Raspberry Pi Camera Module V1 & V3 / PS3 Eye

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!