PHP in HTML einbinden?!

  • Hi,

    wahrscheinlich ist die Lösung mal wieder ganz simpel und ich finde sie nur nicht :blush:

    Ich habe gerade Apache2 für mich entdeckt und auch schon ein bisschen rumgespielt. Ich habe schon seit etwas längerem auch einen Minecraft Server auf meinem Pi manchmal zum Basteln laufen. Jetzt wollte ich beides kombinieren und über eine (HTML) Webseite den Minecraft Server starten/stoppen. Ich habe schon probiert über HTML eine Weiterleitung zu einer PHP Seite zu machen im Format

    Code
    <a href="mcstartserver.php">Minecraft Server starten</a>


    jedoch wir dann angezeigt

    Code
    403 - Forbidden


    den nutzer www-data habe ich schon in die sudoers eingetragen. Mein PHP-Skript sah so aus

    PHP
    <?php
    shell_exec("sudo sh /home/pi/startdata/mcstartserver..sh");
    ?>


    Das Skript "mcstartserver.sh" liegt bei mir im home-verzeichnis und startet den (Java-)Minecraft Server. Danach habe ich probiert den oben genannten PHP-Code in HTML einzubinden, und wenn man auf einer Seite einen Link "Server starten" klickt, wird man auf eine Seite weitergeleitet, auf der als Text steht "Der Server startet nun" und nach diesem Textelement kommt im Code das Skript, so sieht diese Seite aus:

    PHP
    <h1>Der Server sollte sofort starten, tut er das nicht, kontaktieren sie bitte</h1>
    </br></br>
    
    
    <?php
    shell_exec("sudo sh /home/pi/startdata/mcstartserver.sh");
    ?>
    </br>
    <a href="mcserverctrl.html">Zurueck zur Startseite von MC-Server-Control</a></b$

    Habt ihr irgend eine Ahnung wie ich es nach meinen genannten Wünschen realisieren könnte, so das am besten der Server sich auch durch ein Skript wieder abschalten lässt?

    Viele Grüße und :danke_ATDE::danke_ATDE::danke_ATDE: ,
    MarvMan

    Meine Website: MarvMan.me

    :)Über einen Besuch würde ich mich sehr freuen :)


    Vielen Dank! :)

  • Ist das Problem nun, dass der Server nicht startet oder das die Seite nicht angezeigt wird?

    Den user www-Data als su einzutragen halte ich für weniger gut(...).

  • Teste mal mit einer Index.php mit folgendem Code:

    PHP
    <?php
    
    
    phpinfo();
    
    
    ?>

    Wenn du eine Tabelle mit Infos zu PHP siehst, ist das schon mal gut.

    Deine Datei muss die Endung .php besitzen damit sie auch vom Interpreter abgearbeitet wird.

    Gruß
    Waldi

    Einmal editiert, zuletzt von WaldiBVB (27. Oktober 2016 um 14:27)

  • Puh..

    PHP Redirections (Weiterleitungen) sehen typischerweise so aus header("Location: URL");
    Dein Link <a href="....">Link</a> ist normales HTML, hier bindest du nichts ein.

    Deswegen weiß ich leider nicht, was du mit PHP in HTML einbinden meinst, außer du meinst die Datei mcstartserver.php
    Dessen Inhalt ist HTML und PHP gemischt, was problemlos funktioniert.

    Wenn du versuchst eine einfache .php Datei zu öffnen und erhälst einen 403-Forbidden würde ich auf die Dateiberechtigungen schauen.
    Sprich die Datei selber braucht wahrscheinlich sowas wie chmod 755

    lg

  • FAQ => Nützliche Links / Linksammlung => Befehle über PHP mit root Rechten ausführen (sudo webscript)

    Wenn die *.php Datei www-data gehört bedarf es keiner 755 Rechte, was eh Quatsch ist da die Datei nicht direkt ausgeführt sondern vom php Interpreter übergeben+verarbeitet wird - sofern kein Shebang gesetzt ist bringen die Ausführrechte ebenfalls nichts.

    Was aber höchst wahrscheinlich das Problem ist: sudo. Siehe dazu obigen Link.

    Allgemein empfehle ich auch einen Blink auf folgende Anleitung zu werfen, auch wenn Du keine GPIO's schalten willst! => FAQ => Nützliche Links / Linksammlung => PHP: Anleitung zum schalten von GPIO => Einführung und Grundlagen

  • hmmm....
    Habe versucht im Browser mit einer PHP-Datei die Übersicht aufzurufen, jedoch auch da nur

    Code
    403 - Forbidden


    Danach habe ich in der Konsole probiert die Datei mit

    Code
    php phpinfo.php


    aufzurufen, da kam diese ziemlich lange Ausgabe:

    Habt ihr noch irgendeine Ahnung was das Problem sein könnte und wie ich es beheben könnte?

    :danke_ATDE: und Tschüss,

    MarvMan

    Meine Website: MarvMan.me

    :)Über einen Besuch würde ich mich sehr freuen :)


    Vielen Dank! :)

  • Nein das ist zu kurz. Es ging mir schon darum WO GENAU deine *.php liegt. Deswegen schrieb ich auch explizit: bitte so detailliert wie möglich

    Du hast jetzt nur eine oldindex.html angehängt ohne Verzeichnisstruktur.... Und was soll man mit der other_vhosts_access.log ? Ich sehe da nirgends einen Zugriff auf ne *.php in deinem Fall wohl phpinfo.php ... other_vhosts wäre aber auch nicht richtig es sei denn du hast bereits an der Standard apache2 Konfiguration herumgespielt

    Aber abpropo apache2 Konfiguration: DocumentRoot ist das Verzeichnis wo die Dateien liegen müssen. Seit Jessie ist das nicht mehr /var/www/ sondern dort ein Unterverzeichnis. Kleiner aber Feiner Unterschied.

  • Okay, ich lade dann jetzt hier nochmal mein selbstprogrammiertes Index hoch. Hoffe das hilft dir. Dropbox-Link: Klick!
    Ich weiß leider nicht wie man das als "ausführbares" HTML hochlädt.
    Wenns dir vielleicht trotzdem hilft: Die Startseit ist index.html

    Meine Website: MarvMan.me

    :)Über einen Besuch würde ich mich sehr freuen :)


    Vielen Dank! :)

    Einmal editiert, zuletzt von MarvMan (27. Oktober 2016 um 19:52)

  • Mach doch mal bitte folgendes und poste die Ausgabe (bitte in CODE):

    Code
    ls -la /var/www/html/
    
    
    wget -qO- http://127.0.0.1/cmd.html

    Und dann erinnere ich noch mals an Beitrag#6 und bitte dich insbesondere den letzten Link aufmerksam zu lesen - denn das hast du anscheint noch nicht

  • Ausgabe auf Befehl Nr. 1 ist:

    Ausgabe auf Befehl Nr. 2 ist:

    Code
    <h1>cmd-Seite</h1></br>
    <h2>Klicken sie auf einen Link um den Befehl auszufuehren!<h2></br>
    <a>Dies ist eine Art "Kontrollzentrum" fuer den Raspberry Pi!</a></br>
    <a href="mcserverctrl.html">Minecraft Server-Kontrolle</a></br>
    <br>
    <br>
    <br>

    Meine Website: MarvMan.me

    :)Über einen Besuch würde ich mich sehr freuen :)


    Vielen Dank! :)

  • Äähhhhh.....
    Ja, ich glaube ich hab da mal so ganz ausversehen

    Code
    chown 755


    und den irgendwie zum root gemacht.
    Weisst du wie ich das wieder rückgängig auf den Startzustand mache und so das ich .php ausführen kann?

    EDIT: ...und habe ihn auch sämtlichen Benutzergruppen wie z.B. pi, sudoers und root hinzugefügt....

    Meine Website: MarvMan.me

    :)Über einen Besuch würde ich mich sehr freuen :)


    Vielen Dank! :)

    Einmal editiert, zuletzt von MarvMan (27. Oktober 2016 um 20:05)

  • Wie, du hast den www-data Benutzer modifiziert ? :-/
    Oder nur über visudo ?

    Zurück auf den Standard, rückgängig machen, geht nicht - es sei denn du weißt noch selbst wie die Rechte vorher aussahen.

    Wie gesagt - ließ den zuletzt genannten Link. Ich weigere mich sowas immer überall wiederholen zu müssen wenn es denn schon in einer Anleitung von mir steht :fies:
    Da steht auch wie man die Dateirechte verändert bzw worauf es ankommt.


  • Wie, du hast den www-data Benutzer modifiziert ? :-/
    Oder nur über visudo ?

    Zurück auf den Standard, rückgängig machen, geht nicht - es sei denn du weißt noch selbst wie die Rechte vorher aussahen.

    Wie gesagt - ließ den zuletzt genannten Link. Ich weigere mich sowas immer überall wiederholen zu müssen wenn es denn schon in einer Anleitung von mir steht :fies:
    Da steht auch wie man die Dateirechte verändert bzw worauf es ankommt.

    Und kannst du mir erklären wie man das mit PHP hinkriegt wenn die Standard-Rechte konfiguriert sind? Ich setze den Pi neu auf. ich würde das gerne mit php hinkriegen.

    Meine Website: MarvMan.me

    :)Über einen Besuch würde ich mich sehr freuen :)


    Vielen Dank! :)

  • Du installierst apache2 und php5, kopierst / erstellst / lädsthoch deine *.php Datei ins DocumentRoot und hast Spass :fies:

    Code
    sudo apt-get update
    
    
    sudo apt-get install apache2 php5
    
    
    sudo echo '<? phpinfo(); ?>' >/var/www/html/info.php
    
    
    wget -qO- http://127.0.0.1/info.php

    ...grob überschlagen...


    Aber, sagte ich schon das PHP doof is? :P

  • Aber, sagte ich schon das PHP doof is? :P

    Nö, aber (ich kenn mich nur sehr wenig aus) es ist das einzige was ich zum ausführen von Shell-Scripts auf einem Webserver kenne. Vielen Dank für deine freundliche Hilfe. :danke_ATDE::danke_ATDE::danke_ATDE::danke_ATDE::danke_ATDE::danke_ATDE:

    Liebe Grüße,
    MarvMan
    Automatisch zusammengefügt:


    Du installierst apache2 und php5, kopierst / erstellst / lädsthoch deine *.php Datei ins DocumentRoot und hast Spass :fies:

    Code
    sudo apt-get update
    
    
    sudo apt-get install apache2 php5
    
    
    sudo echo '<? phpinfo(); ?>' >/var/www/html/info.php
    
    
    wget -qO- http://127.0.0.1/info.php

    ...grob überschlagen...


    Aber, sagte ich schon das PHP doof is? :P

    Sorry, hab das ganze erst jetzt mit einem neu aufgesetztem Pi ausprobieren können. Die ersten beiden Kommandos funktionieren, ab dritten scheitert es mit der Ausgabe

    Code
    pi@raspberrypi:/var/www/html $ sudo echo '<? phpinfo(); ?>' >/var/www/html/info.php
    
    
    -bash: /var/www/html/info.php: Permission denied

    Hast du irgendeine Ahnung woran das liegen könnte? Ich habe an dem neu aufgesetzten Pi wirklich nichts ausser das eingegeben.

    EDIT: oh war ich **** , ich habe jetzt einfach den Index in php geschrieben und schon ging es!

    :danke_ATDE: MarvMan

    Meine Website: MarvMan.me

    :)Über einen Besuch würde ich mich sehr freuen :)


    Vielen Dank! :)

    Einmal editiert, zuletzt von MarvMan (28. Oktober 2016 um 09:27)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!