Umgebungserkennung

Gerade bin ich wieder an einem neue Projekt und damit auch wieder an einem Klassiker: Die Umgebungserkennung. Also, auf welchem System befinde ich mich. Development, Test, Staging, Production…

Um das raus zu bekommen gibt es in meinen Augen 3 Ansätze:

  1. .env Datei
    Also, eine Datei im Dateisystem ablegen, welche z.B. development als Inhalt hat und per PHP ausgelesen wird. Auf dem Live-System liegt die Datei gar nicht und der Default ist eben Live.
    Der Vorteil ist, dass man so sehr einfach auf jedem System das Verhalten auf anderen Systemen nachstellen kann und es fuinktioniert auch per CLI sehr einfach. Nachteilig ist das Thema Deployment. Man muss aufpassen, dass die Datei nicht mit deployed wird und evtl. dann auf einem Staging System die Datei wieder herstellen, nachdem man eine neue Version seiner Software dahin kopiert hat. Das lässt sich wohl aber elegant per Phing lösen. 😉 Darüber hinaus habe ich natürlich trotzdem auf dem Live-System damit einen zusätzlichen file_exists Dateisystemzugriff.
  2. Server-Namen / IP Auswerten
    Suchen nach z.B. 127.0.0.1 für Development oder staging für staging im Server-Name / Remote-IP.
    Vorteil ist hier, dass es echt sehr fix ist. Nachteile sind dann wohl die Abhängigkeit vom Hostnamen und dass es per CLI nicht funktioniert.
  3. Environment Variablen
    Setzen und Abfragen einer Umgebungsvariablen. Unter Linux lassen sich Umgebungsvariablen setzen, die sich per PHP abfragen lassen. Genauso ist es in der Apache-Config möglich, solche Variablen zu setzen.
    Der Hauptvorteil ist vorallem die Geschwindigkeit. Ist ein einfacher Vergleich. Zum zweiten, ist das auch der von Zend gewünschte Weg. Ich denke, dass es Nachteilig ist, dass man dass an mehreren Stellen unterschiedlich pflegen muss. Zum einen auf jedem Apache anders (live vs. staging vs. …) und dann natürlich nochmal das es in der CLI funktioniert in Linux selber.

Ich persönlich tendiere zu der ersten Variante.
Was meint ihr? Oder habe ich eine gute Methode vergessen?

GD Star Rating
loading...

Kommentar verfassen