Systemuhr über PHP stellen

  • Hi
    ich habe folgendes Problem:
    ich möchte einen Raspberry Pi als Kamera auf einer Hochzeitsfeier verwenden und brahe dazu das aktuelle systemdatum der raspberrys
    eigentlich kein Problem da man ja normalerweise Netzwerk hat
    da aber in diesem fall das nicht der fall ist möchte ich über eine webseite und PHP die Systemzeit eintragen.
    der raspberry hat einen W-Lan Stick mit dem er zu erreichen ist
    ich hab da mal was gebastelt aber dass klappt leider so nicht hier mal der code:


    <?PHP
    if (isset($_POST['setServerDateTime']))
    { //anfang ifisset
    if ($_POST['setServerDateTime'] == "Serverdatum setzen")
    { //anfang ifisset
    $datetxt = $_POST['date_txt'];
    echo $datetxt;
    shell_exec('sudo date "$datetxt"');
    }
    }
    ?>


    liebe Grüsse Stefan

  • Du musst uns schon verraten WAS daran nicht funktioniert.
    Normalerweise versuche ich, den Leuten ihre Fragen zu beantworten und nicht ihnen ihr Projekt auszureden, in diesem Fall frage ich mich aber wirklich, warum du das so und überhaupt machst.
    Eigentlich sollte der Pi die Systemzeit nicht so schnell verlieren, habs aber nie ausprobiert.
    Und warum willst du eine Weboberfläche haben, warum nicht einfach per ssh anmelden und setzen?

  • Hi
    soweit ich mich erinnere darf die Systemzeit in UNIX Umgebung nur ROOT setzen.
    Dein Webinterface ist mit den Userrechten NOBODY unterwegs.
    Wo kämen wir dahin wenn jeder NOBODY an der Zeit drehen darf ;)
    Probleme wären zBsp ungültige Zertifikate (falscher Zeitstempel) usw
    Gruß

  • Hallo Stefan,


    lass Dir die Ausgabe von date anzeigen.


    [code=php]$a = shell_exec('sudo date "$datetxt"');


    echo "<pre>$a;</pre>";[/php]


    Viele Grüße
    Olaf

    Es gibt immer verschiedene Möglichkeiten um an ein Ziel zu kommen.
    Alle angegebenen Eingaben, wenn nicht anders angegeben, sind als Benutzer 'root' auszuführen.

  • Paspberry... das ist irgendwie... falsch
    Der Webserver ist standardmäßig mit dem Nutzer www-data unterwegs.
    Zeit setzen darf nur root, das ist soweit richtig, aber dafür ja das sudo (aka "tu als root").
    Solange uns aber nicht verraten wird "was nicht tut", ist alles andere fröhliches herumraten.
    Kommt eine Fehlermeldung? Wird die Zeit nicht verändert? Kommt keine Erfolgsmeldung?(Die gäbe es auch nicht, wäre aber nicht das erste Mal, dass das als Fehler interpretiert wird).
    Gucken kannst du auch mal in den Logfiles (normal unter /var/log/apache2/{error|access}.log


    Wenn ich in meine Kristallkugel gucke, dann sehe ich dort, dass www-data keine sudo-Rechte hat. in dem Fall solltest du die Suchfunktion des Forums verwenden, sudo + webserver da gibt es duzende Tutorials zu. Aber Kristallkugeln sind eine vage Wissenschaft!

  • Quote

    ich möchte einen Raspberry Pi als Kamera auf einer Hochzeitsfeier verwenden und brahe dazu das aktuelle systemdatum der raspberrys


    Da du ja nur ein Datum zu speichern hast eine Frage: wieso nutzt du kein Shell-Script, welches die aktuelle Zeit in die besagte Datei schreibt?


    Bash
    #!/bin/sh
    echo $(date +"%Y-%m-%d %H:%M") > /home/<dein Nutzername>/datetime.txt
    # Ausgabe: 2015-07-10 13:44
    exit 0
  • das problem ist ich bekomme keine Fehlermeldung von PHP aber die zeit wird nicht gesetzt
    in der /etc/sudoers habe ich www-data in die liste der sudoers eingetragen
    (der Raspi läuft ohne Netzwerkverbindung daher sehe ichda keine sicherheitsprobleme)

  • Noch mal die Frage direkt: brauchst du unbedingt PHP, nur um ein Datum in eine Datei zu schreiben?
    Denn wenn nicht, siehe meine Antwort oben ;)

  • Es gab da so ein Sprichwort mit 'lesen' und 'Vorteil'... Er will etwas ganz anderes und hat das auch deutlich geschrieben. Es wird überdeutlich, wenn du dir sein Skript anguckst, indem er sogar den überflüssigen (sorry, aber den brauchst du wirklich nicht) Postparameter ->SET<-ServerDateTime verwendet.
    Wegen dem überflüssig: prüfe doch einfach ob die date_txt-POST-Varible gesetzt ist...

  • Quote

    da aber in diesem fall das nicht der fall ist möchte ich über eine webseite und PHP die Systemzeit eintragen.


    Ich bin nicht dumm und habe das gelesen.


    Aber er schreibt nur, dass er ein Datum speichern möchte. Daher fragte ich, ob das wirklich mit PHP sein muss, da es mit einem Shell-Script viel leichter zu handhaben wäre.
    PHP + Webserver: er müsste immer auf die Webseite gehen und irgendwas machen, damit das Datum gespeichert wird.
    Shell-Script + cronjob = alles automatisch.

  • problem ist das ich keine Möglichkeit habe über ein Shell-Script auf den Raps zuzugreifen da ich maximal mit einem andy per plan und einer website mit dem rasp kommunizieren kann
    der Raps ist quasi ein hotspot ohne Verbindung zum internet

  • Also musst du nur auf die Internetseite um, sagen wir mal, irgendetwas anklicken zu müssen, damit das Datum gespeichert wird?


    Wegen dem "keine Möglichkeit"... deswegen deutete ich das mit dem cronjob an.

  • nutzt ja nix da auf dem Raps die falsche zeit läuft mangels Verbindung zu einem zeitserver und ich quasi mittels einer webseite die aktuelle Uhrzeit per javascript die zeit per browser ermittle in ein text eingabefeld eintrage und in den rasple per PHP und shell eintragen muss

  • Die Info hast du oben nicht genannt. Oben stand nur, dass du die aktuelle Zeit brauchst, du aber keinen Netzwerkzugang hast :P


    Dann probiers mal so:

    Code
    $file = fopen('./datetime.txt', 'a+');fwrite($file, date("Y-m-d H:i", time()));fclose($file);


    Edit: habe die Kleinigkeit vergessen, dass du die SYSTEM-ZEIT setzen möchtest... daher bringt das da oben nichts. Also ignorieren bitte.
    Die Kamera bezieht ihre Zeit ja vom System, und kann sie nicht von irgendeiner Datei beziehen.

  • "visudo" ausführen und folgendes eintragen:

    Code
    www-data ALL=(ALL) NOPASSWD: /pfad/zum/phpskript.php


    Wenn Du "vi" nicht beherrschst, vorher in der gleichen Shell "export EDITOR=/pfad/zum/lieblingseditor" (z.B. /usr/bin/nano).

    ...gettin' paid by the hour, and older by the minute...


  • Ich bin nicht dumm und habe das gelesen.


    Sorry, aber wenn du das schon so ansprichst muss ich dir widersprechen, nach deiner Definition bist du dumm.
    Er will die Systemzeit seines Pi korrekt setzen, er will nicht die Zeit irgendwo hineinschreiben.



    Nochmal ganz deutlich:
    Systemzeit falsch (warum auch immer, habe ich ihn ja auch gefragt)
    Website um Systemzeit manuell zu setzen
    Siehe sein Script Aufruf 'date $date_txt'
    Siehe man date: date [MMDDhhmm[[CC]YY][.ss]] SETZT die Systemzeit


    So, nächstes Mal alles lesen
    :cool:


    Und jetzt haben wir uns alle wieder lieb?


    Zum Thema: Es gibt auch ssh-Clients für smartphones, es ist sicher einfacher das damit zu machen als eine Website dafür zu basteln und meine erste Frage bleibt auch: Warum ist die Zeit überhaupt so falsch, hast du das mal getestet?
    Automatisch zusammengefügt:[hr]
    In der Zeit in der ich geschrieben habe, hast du es offenbar auch bemerkt...
    Ich komme auch nochmal zu meinem ersten Beitrag zurück: WAS TUT NICHT; WORAN MERKST DU ES? Hast du mal in die Logs geschaut (wo du die findet hab ich auch geschrieben)?
    Wir arbeiten hier mit der Kristallkugel!


  • probiert klappt auch nicht ich habe die Datei allerdings mit nano editiert


    Hast Du mit "visudo" gerarbeitet, oder die sudoers direkt editiert? Letzteres funktioniert nämlich nicht.

    ...gettin' paid by the hour, and older by the minute...

  • der raspi hat doch nur eine fake uhr da ist doch das problem das wenn ich ihn starte der irgend eine Uhrzeit als start Uhrzeit setzt oder?

  • Quote

    Sorry, aber wenn du das schon so ansprichst muss ich dir widersprechen, nach deiner Definition bist du dumm.


    Komisch, dass hier immer nur beleidigt wird, sobald man mal etwas nicht oder falsche verstanden. Du bist ja schon wie meigrafd.