2014-08-29 13 views
5

Ich verwende Github, um meine Websites auf meinem Produktionsserver bereitzustellen. Aus diesem Grund möchte ich nicht speichern .env. *. Php Dateien alles, so dass sie in meinem .gitignore sind.Umgebungsvariablen und Handwerker funktionieren nicht auf Produktionsserver

Innerhalb jeden Umgebungsverzeichnisses I die Datenbank Config zum Beispiel festgelegt hat getenv(), zu verwenden:

<?php 

'connections' => array(

    'mysql' => array(
     'driver' => 'mysql', 
     'host'  => getenv('DB_HOST'), 
     'database' => getenv('DB_NAME'), 
     'username' => getenv('DB_USERNAME'), 
     'password' => getenv('DB_PASSWORD'), 
     'charset' => 'utf8', 
     'collation' => 'utf8_unicode_ci', 
     'prefix' => '', 
    ), 


), 

); 

Ich habe dann in die Apache-conf-Datei für meine virtuellen Hosts und legen Sie die Umgebungsvariablen gegangen, wie folgt:

SetEnv DB_HOST ***.***.***.*** 
SetEnv DB_NAME database 
SetEnv DB_USERNAME databaseuser 
SetEnv DB_PASSWORD databasepass 

Dies alles funktioniert perfekt auf dem Produktionsserver.

Allerdings habe ich gerade die Datenbank gerade im Moment importiert, anstatt php artisan migrate zu verwenden, weil es nicht funktioniert.

Ich weiß es nicht funktioniert, weil es nicht von Apache schlägt so die Variablen nicht gesetzt werden, aber ich habe viele Möglichkeiten ausprobiert, um zu versuchen, um dieses Problem zu bekommen, aber ich habe habe kein Glück ab noch.

Ich habe versucht, die Umwelt zu zwingen, um zu sehen, ob es die Variablen durch die Verwendung php artisan --env=production migrate

Ich habe auch versucht habe bekommen können überprüfen, ob es die richtige Umgebung ist mit php artisan env durch Laufen und es die Produktionsumgebung ist mit der richtig ist .

Meine nächste Idee war, eine .env.production.php-Datei manuell auf dem Produktionsserver zu erstellen. Ich habe eine erstellt und verwendet getenv() nur für den Fall, dass es so funktioniert, aber der gleiche Fehler aufgetreten ist, so habe ich versucht, die Variablen manuell ohne getenv() und ich hatte immer noch kein Glück.

Alle Ideen würden sehr geschätzt werden.

+0

Produktion .env Dateien aufgerufen werden .env.php –

+0

nicht .env.production.php Ich habe ein Umfeld, in Bootstrap/start.php mit dem ‚Produktion‘-Namen, würde dies funktioniert das überhaupt nicht? – Karl

+0

Ich habe gerade versucht, die .env.php-Datei, die funktioniert, wenn ich die Variablen manuell einstellen, gibt es eine Möglichkeit, die Variablen, die über Apache gesetzt sind, um mit Handwerker arbeiten? – Karl

Antwort

1

Sie sollten .env.php Dateien verwenden, wie in den laravel docs beschrieben.

Für Umgebungsvariablen in der Produktion einstellen, verwenden Sie eine Datei .env.php in Ihrem Projekt root genannt:

<?php 

# .env.php 

return array(

    'DB_HOST' => 'localhost', 
    'DB_NAME' => 'my_database', 
    'DB_USER' => 'user_name', 
    'DB_PASS' => 'super-secret-sauce', 

); 

Für verschiedene Umgebungen, die Sie verwenden verschiedene .env Dateien. Zum Beispiel in lokale Umgebung würden Sie verwenden, und für testen Sie würden .env.testing.php verwenden.

Wenn Sie artisan-Befehle wie migrate oder db:seed ausführen, können Sie die Umgebung mit der Option --env= angeben.

Zum Beispiel $ php artisan db:seed --class=UsersTableSeeder --env=testing

+0

.env Dateien funktionieren nur in Laravel 5. Er ist Laravel 4 –

+0

@RichardTorcato: ein. '.env * php' Dateien sind für Laravel 4.' .env' Dateien sind für Laravel 5. Der einfachste Weg, den Unterschied zu erkennen. ist, dass die env-Dateien in L4 php-Dateien waren. Außerdem ist der Link, auf den ich in den Dokumenten hingewiesen habe, Laravel 4 spezifisch. – ryanwinchester

Verwandte Themen