PHP - Lehrling: Wie erstellt und bearbeitet man eine eigene Konfigurationsdatei

Hallo PHP Freaks da draußen!

Fast alle größeren Projekte haben eine eigene Konfigurationsdatei. Z.B. hat die Software "phpbb" eine Konfigurationsdatei, in der gespeichert wird, ob das Forum gerade aktiv ist, wie die Datenbankeinstellungen sind (Benutzername und Passwort) usw.

Ich möchte auch gerne eine solche Konfigurationsdatei erstellen, die man mit include() einbinden kann, sodass alle Variablen global die jedes Script übernommen werden. Leider finde ich nichts dazu, weil "PHP eigene Konfigurationsdatei erstellen" oder ähnliches immer nur zu PHP eigenen Konfigurationsdatei führen, aber ich möchte doch eine eigene erstellen!

Kann mir jemand sagen, wie ich das am besten mache, ob es dazu schon fertige einfache Lösungen gibt oder kann mir zumindest jemand sagen, mit welchen Suchbegriffen ich suchen muss?

Das wäre sehr nett, danke im voraus!

Der PHP Lehrling

  1. Hallo,

    meinst Du die "php.ini" - die Initialisierungsdatei bzw. Konfigurationsdatei?

    Habe von PHP eigentlich so gut wie keine Ahnung, jedoch kannst Du diese generell ganz einfach mit einem Texteditor bearbeiten.

    Vielleicht findest Du hier etwas zum einlesen.

    http://www.schattenbaum.net/php/

    Gruß, Ich

  2. Hallo,

    Ich möchte auch gerne eine solche Konfigurationsdatei erstellen, die man mit include() einbinden kann, sodass alle Variablen global die jedes Script übernommen werden. Leider finde ich nichts dazu, weil "PHP eigene Konfigurationsdatei erstellen" oder ähnliches immer nur zu PHP eigenen Konfigurationsdatei führen, aber ich möchte doch eine eigene erstellen!

    Möchtest du sie automatisiert erstellen (also mit Hilfe eines anderen Scripts) oder einfach haben (dann geht das doch auch mit einem ganz normalen Texteditor?!).

    Wenn du Ersteres meinst: schaue dir mal die Dateisystemfunktionen an ([url=http://php.net/filesystem@title=php.net/filesystem]), dort findest du unter anderem [url=http://de2.php.net/manual/de/function.file-put-contents.php@title=file_put_contents] um in eine Datei einen Inhalt zu stecken. Ich bin nicht ganz darüber informiert, aber ich glaube, dass, wenn noch keine Datei solchen Namens existiert (zB config.inc.php), wird automatisch eine solche erstellt.
    In diese Datei kannst du dann ganz normal PHP-Code einbauen.

    Schöne Grüße,
    Willi

  3. Hallo

    Ich möchte auch gerne eine solche Konfigurationsdatei erstellen, die man mit include() einbinden kann, sodass alle Variablen global die jedes Script übernommen werden. Leider finde ich nichts dazu, weil "PHP eigene Konfigurationsdatei erstellen" oder ähnliches immer nur zu PHP eigenen Konfigurationsdatei führen, aber ich möchte doch eine eigene erstellen!

    Kann mir jemand sagen, wie ich das am besten mache, ob es dazu schon fertige einfache Lösungen gibt oder kann mir zumindest jemand sagen, mit welchen Suchbegriffen ich suchen muss?

    Erstelle eine PHP-Datei, in der du jene Variablen, die über mehrere Skriptdateien hinweg immer den selben Wert beinhalten sollen, ablegst. Wenn es z.B. eine Datenbank gibt, die du aus verschiedenen Skripten heraus ansprechen willst, ist es sinnvoll, deren Zugangsdaten an _einer_ Stelle, nämlich der Konfiguration, abzulegen. Gibt es Dateien, die in verschiedenen Skripten aus- bzw. eingelesen, die aufgerufen oder in die hinein etwas (Daten) gespeichert wird, sollte deren Pfad zentral in der Konfiguration vermerkt werden.

    Ich benutze dazu, so es sich anbietet, gerne Arrays. Hier mal ein rudimentäres Beispiel:

    <?php  
      
    # DB-Angaben  
    $db["host"] = "localhost";  
    $db["user"] = "dein-db-benutzername";  
    $db["pass"] = "dein-passwort";  
    $db["name"] = "name-der-db";  
      
    # Pfad zu einem Template  
    $template["footer"] = $_SERVER["DOCUMENT_ROOT"]."/pfad/zum/template/footer.inc";  
      
    #Emailadresse des Admins  
    $admin_mail = "ich@example.com";  
      
    ?>
    

    Wenn die Konfigurationsdatei eingebunden ist, bleibt nur noch die Aufgabe, die Variablen in den eigenen Funktionen bekannt zu machen (als Parameter bzw. per global).

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.2
  4. echo $begrüßung;

    Ich möchte auch gerne eine solche Konfigurationsdatei erstellen, die man mit include() einbinden kann, sodass alle Variablen global die jedes Script übernommen werden.

    Wie soll das Erstellen denn erfolgen? Soll jemand Daten irgendwo einhacken und irgendein Prozess soll dann diese Daten in dem PHP-Script eintragen, das du zu inkludieren gedenkst? Oder soll es einfach nur diese Datei geben, in der der Admin händisch Änderungen vornehmen kann?

    Für den ersten Fall:

    • Daten entgegennehmen
    • auf Plausibilität prüfen
      -- dabei Einschleusung von ungewünschtem Code verhindern:
         so etwas: '; phpinfo();' (inklusive der ') als Eingabe darf beispielsweise nicht vorkommen
    • Datei öffnen
    • Strings ausgeben, so dass am Ende eine gültige PHP-Code-Datei entsteht.
    • Datei schließen.

    Für den zweiten Fall:

    • einfach die Datei zu Fuß schreiben. Kommentieren, damit man weiß, was man wie ändern kann und welche Auswirkungen das hat.
      Alternativ bietet sich das ini-Format an. Das ist benutzerfreundlicher, da hier weniger Regeln zu beachten sind als bei der PHP-Syntax. Das Lesen kann man mit parse_ini_file() erledigen. Für das Schreiben, kann man den Hinweisen in den Userkomentaren folgen, oder es selbst erledigen. Das ist ja noch einfacher als der PHP-Code zu erstellen.
      Eine ini-Datei hat den Vorteil, dass alles als Daten angesehen wird und sich darüber im Prinzip kein ungewünschter Code ins Skript einschleusen lässt (falls man so unklug ist, die Daten ungeprüft zu eval()uieren).

    echo "$verabschiedung $name";

  5. Hallo,

    Ich möchte auch gerne eine solche Konfigurationsdatei erstellen, die man mit include() einbinden kann, sodass alle Variablen global die jedes Script übernommen werden. Leider finde ich nichts dazu, weil "PHP eigene Konfigurationsdatei erstellen" oder ähnliches immer nur zu PHP eigenen Konfigurationsdatei führen, aber ich möchte doch eine eigene erstellen!

    Vor dem gleichen Problem stand ich beim Schreiben des Admininterface von tkswim auch, da die zentrale Einstellungsdatei (mit den Pfaden, Datenbankzugangsdaten usw.) per Formular bearbeitet werden sollte - allerdings sind nicht alle Einstellungen auf einer Seite, sondern in mehrere Kategorien (mit jeweils einem Formular) unterteilt.
    Um das Problem jede Einstellung wieder speichern zu müssen zu umgehen habe ich eine Templatedatei (ich verwende Smarty) erstellt in der der komplette Inhalt der Einstellungsdatei steht - nur statt der Werte steht da eine Abfrage ob der Wert für die entsprechende Einstellung an Smarty übergeben wurde, wenn ja wird der eingebaut[1] und wenn nicht, wird die aktuelle Einstellung für diesen Wert verwendet. Anschließend wird die Einstellungsdatei mit dem geparsten Template überschreiben - aber vorsicht, die Prüfungen der Daten müssen sicherstellen, dass die Software nach dem Ändern der Einstellungsdatei noch läuft (besonders gefährdet sind dabei die Pfade).

    Grüße aus Nürnberg
    Tobias

    [1] entsprechende Maskierungen um ' zu entschärfen werden dabei vorgenommen (siehe Antwort von dedlfix)

    --