Gerhard: Unterscheidung lokale Installation / Webserver

Hallo Leute,

ich hätte mal eine grundsätzliche Frage zum Arbeiten mit Datenbanken in PHP. Irgendwo hab ich ja in der Regel ein Konfigurationsfile liegen, in dem die Zugangsdaten zur DB gespeichert sind. Da ich nun ja auf meinem lokalen XAMPP andere Zugangsdaten habe als am Produktionsserver, muss eine Art "Umgebungsunterscheidung" her. Wie löst ihr das? Ich glaube eine richtig saubere Lösung habe ich da bis jetzt nicht gefunden...

Danke für eure Hinweise!

lG,
Gerhard

  1. ich hätte mal eine grundsätzliche Frage zum Arbeiten mit Datenbanken in PHP. Irgendwo hab ich ja in der Regel ein Konfigurationsfile liegen, in dem die Zugangsdaten zur DB gespeichert sind. Da ich nun ja auf meinem lokalen XAMPP andere Zugangsdaten habe als am Produktionsserver, muss eine Art "Umgebungsunterscheidung" her. Wie löst ihr das? Ich glaube eine richtig saubere Lösung habe ich da bis jetzt nicht gefunden...

    Ich hab' eine Konstante die "ICH_BIN_LOCAL" genannt wird, aufgrund diverser Faktoren wird ermittelt, ob es sich um das Live-System handelt oder nicht - das kann z.B. SERVER_NAME sein oder schlichtweg der Pfad im Filesystem - sei kreativ.

  2. Lieber Gerhard,

    ich löse das so:

    function get_login_credentials () {  
    	$ar = array(  
    		// hier müssen nun die Werte für die MySQL-Datenbank stehen!  
    		'login' => '********',  
    		'pw' => '********',  
    		'db' => '********',  
    		'host' => '********'  
    	);  
      
    	// lokaler Testserver oder "production server"?  
    	if (preg_match('~(?i)localhost$~', $_SERVER['SERVER_NAME'])) {  
    		$ar['host'] = 'localhost';  
    	}  
      
    	return $ar;  
    }
    

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  3. Hello,

    ich hätte mal eine grundsätzliche Frage zum Arbeiten mit Datenbanken in PHP. Irgendwo hab ich ja in der Regel ein Konfigurationsfile liegen, in dem die Zugangsdaten zur DB gespeichert sind.

    Das ist schon deshalb gut, damit die Daten nicht offenligen, wenn der Parser mal spinnt (ausfällt) und stattdessen den Klartext der Scripte ausliefert.
    Eine mit require_once() eingelesene Kontanten-Datei wird in diesem Falle nicht ausgeliefert. Sie sollte auch außerhalb der Document-Root liegen, damit sie nicht nach Einblicknahme in den ausgelieferten Script-Code noch per HTTP angefordert werden kann.

    Da ich nun ja auf meinem lokalen XAMPP andere Zugangsdaten habe als am Produktionsserver,

    Das verstehe ich nicht. Warum richtetst Du nicht die gleichen User und Passworte ein?

    muss eine Art "Umgebungsunterscheidung" her. Wie löst ihr das? Ich glaube eine richtig saubere Lösung habe ich da bis jetzt nicht gefunden...

    Ich richte meine Testumgebung möglichst als genaues Abbild der Produktivumgebung ein. Durch Einrichtng eines passenden Virtual Hosts auf dem Test-Webserver und Eintrag in die lokale Hosts Datei kann ich dann den Auftritt unter realen Bedingungen testen.

    Zur Sicherheit kann man in den Scripten noch $_SERVER['SERVER_ADDR'] auswerten und eine Kontrollausgabe einbauen, dass die angeforderte IP des Hosts jetzt eine lokale ist. So vermeidet man, dass man aus Versehen die Daten des Life-Auftrittes versaut. Fehlt diese Anzeige in den Formularen, arbeitet man augenscheinlich auf dem Life-Host, was im Eifer des Gefechts schon mal passieren kann.

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de