Kein Zugriff auf exerne Daten

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich erstelle gerade für mein Smart Home eine neue Seite die in php geschrieben ist.

    In den Script benötige ich von den anderen Raspberry Variablen die dort in entsprechenden Dateien wie zb.: Temperatur.dat hinterlegt sind.

    Die Datei möchte ich per include einbinden.

    Dabei bekomme ich vom Apache eine Fehlermeldung

    wrapper is disabled in the server configuration by allow_url_include=0

    Habe schon in der config Datei nachgesehen, kann aber den Punkt niergends finden. In welche Datei muss ich die Änderung durchführen?

    Ja ich weiß das es auch mit Sicherheit zu tun hat, aber mein Smart Home ist ein seperates Netz und nicht mit dem Internet verbunden.

  • fred0815

    Danke für deine schnelle Hilfe.

    Habe die Datei gefunden aber bei mir steht die in ein anderes Verzeichnis. /etc/php/7.4/apache2/php.ini

    Habe den Eintrag geändert, brachte aber keinen Erfolg. Ich habe die gleiche Fehlermeldung.

    Oder liegt es jetzt etwa am Script?

    Das Script dazu sieht so aus:

  • Der Hinweis hat mir geholfen. Bekam die Antwort

    Code
    /etc/php/7.4/apache2/php.ini:861:allow_url_include = On
    /etc/php/7.4/cli/php.ini:861:allow_url_include = Off

    Nachdem ich in der anderen php.ini den Wert auch geändert habe geht es jetzt.

    Danke für deine Hilfe

  • Ich habe diesen Post hervorgeholt, weil ich jetzt das gleiche Problem wieder habe. nur mit das aktuelle System.
    Ich habe einen neuen Raspy mit Debian 12 (Bookworm) 64Bit aufgesetzt.

    In der php.ini habe ich die Einstellungen auch geändert.

    Code
    /etc/php/8.2/apache2/php.ini:870:allow_url_include = On
    /etc/php/8.2/cli/php.ini:870:allow_url_include = On

    Trotzdem habe ich diesmal keinen Zugriff auf die temporären Dateien.
    Als Fehlermeldung bekomme ich folgende Meldung:

    Code
    Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found

    Ich speichere die Daten bewust im /tmp Verzeichnis. Da die laufend geändert werden.
    Ich weiß das sich jetzt einiges geändert hat. Aber besteht trotzdem die Möglichkeit das ich Zugriff auf das /tmp Verzeichnis habe?

  • Post by llutz (October 20, 2024 at 4:47 PM).

    This post was deleted by the author themselves (October 20, 2024 at 5:21 PM).
  • Ich habe mir mal oben Dein Skript etwas angeschaut.

    Code
    // Einbinden der Daten Datei
      include 'http://192.168.10.25/fritzbox/Fritzbox.dat';
    
    // Einbinden der aktuellen DECT Aktoren aus der Datei
      include 'http://192.168.10.25/fritzbox/Heizung.dat';

    Siehe Example #3 unter https://www.php.net/manual/en/function.include.php

    Code
    // den aktuellen Zustand der Heizung aus der /tmp/Heizung.dat einlesen und einer Variable zuordnen
      $datei = "/tmp/Temp_Heizung_Avm.dat";          // Name der Datei
      $array = file($datei);                        // Datei in ein Array einlesen
      $ainHzkTmp1  = $array[0];                       // Die aktuelle Temperatur in der Temp Datei schreiben

    Ähm, ich weiß ja nicht, was Du machen willst. Daten sammeln oder nur bei dem Aufruf anzeigen.
    Falls letzteres brauchst Du überhaupt keine Datei schreiben, sondern holst die Datei und parst sie gleich und gibst die Daten anschließend an den anfragenden Client aus.

    Wenns ner net G'wittern tun tut.

  • llutz
    Danke für die Info. Nur kenne ich mich nicht so tief aus. Wo finde ich apache2.service um den Wert ändern zu können.
    Wegen der Sicherheit weiß ich, aber das ganze System ist nicht mit dem Internet verbunden. Von daher ist das für mich OK.

    Bergwichtel
    Ich habe einen Raspberry der bei mir alles steuert. Wie zum Beispiel Heizung, Steckdosen, Rollor usw.
    Da ich mehrere Möglichkeiten habe alles zu steuern, werden die Zustände der einzelnen Geräte laufend abgefragt und Temporär gespeichert.
    Wo ich jetzt das Problem habe ist der Monitor. Der Zeigt mir alle Geräte an und ich kann über den Monitor auch steuern.

    Deswegen greift mein Monitor laufend auf die temporären Dateien zu um den aktuellen Stand anzuzeigen und bei Änderung entsprechend in den temporären Dateien zu speichern.

    Bis lang hat es auch alles super funktioniert. Nur stelle ich mein Raspberry auf das aktuelle Betriebssystem mit 64Bit um und da jabe ich jetzt halt das Problem.

    Deswegn brauche ich die Möglichkeit, das mein Monitor auf den Haupt Raspy Zugriff auf das /tmp Verzeichnis hat

  • @llutz Ich weiß zwar nicht, warum du den Beitrag gelöscht hast aber ich habe meine Unterlagen moch einmal durch gesucht. Und die Datei apache2.service habe ich mir früher schon mal notiert. Die habe ich schon geändert. Aber es funktioniert trotzdem nicht.

    Vielleicht wäre es doch mal sinnvoll das Problem grundlegender anzugehen und das nicht mit so einem Temporäre-Dateien bebastel zu machen, sondern mit einer Datenbank.

    Da hast du Recht, jetzt würde ich das gaze System bei mir etwas anders aufbauen. Nur da habe ich im Moment nichts von.
    Eventuell werde ich diesen Winter das ganze System neu überarbeiten.
    Nur im Moment möchte ich das gerne jetzt wieder ans laufen bekommen. Dazu muss halt der Monitor auf den zentralen Raspy auf das /tmp Verzeichnis zugreifen können.

    Nur wie gesagt es hat mit das alte 32bit System gelaufen nur jetzt mit der neuen 64bit Version nicht.

    Wäre nett von euch, wenn mir einer sagen kann wo der Fehler liegt und was ich ändern muß.

  • Post by RTFM (October 21, 2024 at 7:34 AM).

    This post was deleted by the author themselves: faldvjer Thread (October 21, 2024 at 8:01 AM).
  • Ich kann dir nicht ganz folgen, wo, welcher Raspberry, was tun soll.

    Vielleicht erhellst du mich ja etwas, aber mit den bisherigen Infos habe ich keinen Überblick.

    Ich glaube auch nicht, dass es etwas mit 32 auf 64 Bit zu tun hat, sondern mit strikteren Vorgaben des neuen Apache2.

    Ich hatte mit meinem Pi Zero bei Bookworm ein ähnliches Problem, dass ich derzeit auch nur mit einem Workaround behoben habe.

  • Stimmt denn die IP 192.168.10.25 und die Pfade u.a. ...fritzbox/Fritzbox.dat usw. noch?

    Code
    $sid = file_get_contents('http://192.168.10.25/tmp/last.SID');

    Ja, die IP-Adresse, Pfad und Dateiname ist richtig

    Die Datei unter /tmp Raspberry A 

    Code
    -rw-r--r--  1 www-data www-data   17 21. Okt 10:40 last.SID

    Ich kann dir nicht ganz folgen, wo, welcher Raspberry, was tun soll.

    Raspberry A ist meine Hauptsteuerung. Die die ganzen Aktoren steuern.
    Die Zustände der Aktoren werden jede Sekunde abgefragt und temporär gespeichert. (Damit ich die SSD nicht so schnell schrotte)

    Rasberry B läuft als Monitor, wo ich alle Aktoren sehen und auch schalten kann.
    Raspberry B soll jetzt die temporären Dateien von Raspberry A auslesen.
    Damit Raspberry B die Schaltflächen entsprechend nach den Zustand der Aktoren Anzeigen kann.

    So sieht der Raspberry B aus.

    Ich gehe auch davon aus das es mit Bookworm zu tun hat.
    Denn ich bin schon mehrmas darüber gestolpert.
    Nur wie konntest du das lösen?

    Hoffe das ich es dir etwas verständlicher machen konnte

  • Robby Liefert der Webserver tatsächlich einfach alle Dateien in /tmp/ aus? 😱 Und ich hoffe mal ganz stark, dass es nicht tatsächlich / ist. Das sollte man dringend ändern. Und da ist auch „das hängt nicht am Internet“ kein Argument. Auch dem lokalen Netz sollte man nicht einfach so alles anvertrauen. Das sollte da mindestens auf ein Unterverzeichnis in /tmp/ beschränken. Und es in der URL dann auch nicht tmp nennen, sondern einen sinnvollen Namen wählen.

    Was steht denn im Webserverprotokoll bei dem fehlgeschlagenen Zugriff?

    Stupid question of the day: If someone with multiple personalities threatens to kill himself, is it considered a hostage situation?

  • __blackjack__ Wie in #6 beschrieben bekomme ich auf der Konsole die Fehlermeldung.
    Und im Errorlog des Webserver wird keine Fehlermeldung gespeichert.

    Liefert der Webserver tatsächlich einfach alle Dateien in /tmp/ aus?

    Ja das ist so. Mitlerweile weiß ich auch das man es besser machen soll. Nur das stammt aus meiner Anfangszeit wo ich mit Programmieren angefangen habe.
    Wie ich schon schrieb, will ich einmal alles komplet neu machen. Nur das bringt mir im Moment nichts.

  • RobbyDer 404 muss auch im Protokoll des Webservers stehen. Oder ist das Protokoll dort deaktiviert? Dann sollte man das zur Fehlersuche aktivieren. Dafür ist das ja da.

    Das mit /tmp/ ausliefert sollte man jetzt ändern. Das ist nicht kompliziert oder aufwändig. Wenn Du da jetzt schon zu faul bist, bleibt das auch nachher so. Sicherheitslücken die popelig einfach zu stopfen sind, stopft man sofort und nicht irgendwann später. Du hast mit genau dieser Stelle im Programm ja sowieso gerade ein Problem, also warum das nicht gleich reparieren‽

    Stupid question of the day: If someone with multiple personalities threatens to kill himself, is it considered a hostage situation?

  • Der 404 muss auch im Protokoll des Webservers stehen. Oder ist das Protokoll dort deaktiviert?

    Das Protokoll ist nicht deaktiviert. Denn andere Fehler werden Protokolliert. In der Regel finde ich dadurch auch die meisten Fehler. Aber nicht in diesem Fall.
    Ich habe auch schon einiges ausprobiert. Es liegt eindeutig an das Verzeichnis /tmp . Verschiebe ich die Datei in ein anderes Verzeichnis klappt es.

    Wenn Du da jetzt schon zu faul bist

    Das bin ich nicht, denn ich bin die ganze Zeit dabei eine andere Lösung zu suchen. Es ist kein Problem wenn ich ein anderes Verzeichnis verwende. Nur wenn ich es unter
    /home/pi/... oder /var/www/html/... speichere wird das alles auf der Speicherkarte geschrieben. Und das möchte ich vermeiden.

    Nur habe ich bis jetzt noch nicht rausfinden können, ob man ein Verzeichnis anlegen kann das auch nur temporär die Daten ablegt also im Speicher wie das /tmp Verzeichnis.

    Weißt du ob das geht und wenn ja wie muss ich das machen?

Participate now!

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