Laravel 4.1 Deployment - Produktion .env.php nicht erkannt wird

Aus irgendeinem Grund, meine Produktion laravel-app denkt, dass es in der lokalen Umgebung.

/var/www/appname/.env.php

<?php

return 
[
    'APP_ENV'   =>  'production',
    'DB_HOST'   =>  'HIDDEN',
    'DB_NAME'   =>  'HIDDEN',
    'DB_PASSWORD'   =>  'HIDDEN'
];

/var/www/appname/bootstrap/start.php

$env = $app->detectEnvironment(function()
{
    return getenv('APP_ENV') ?: 'local';
});

/var/www/appname/app/config/database.php

...
...
'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'    => 'lar_',
    ),
...
...

sudo php artisan env (per SSH)

`Current application environment: local

php artisan tinker dann getenv('DB_NAME')

$ php artisan tinker
[1] > getenv('DB_NAME');
//false

Also entweder meine Umgebungsvariablen nicht gesetzt ist, oder Laravel ist nicht die Anerkennung meiner .env.php - Datei in der Produktionsumgebung.

Update

Mit etwas Hilfe von Anultro im IRC, es scheint, dass .env.php ist noch nicht geladen. Als solche APP_ENV muss festgelegt werden, bevor laravel versucht zu erkennen Umgebungen. Dies macht Sinn, weil Laravel muss wissen, in welcher Umgebung ausgeführt wird, bevor ermittelt wird, ob .env.php oder .env.local.php.

Nachdem dies gesagt ist, .env.php sollte immer noch verwendet werden, zum speichern von db-Zugangsdaten und geheimen Schlüsseln etc... Aber ich habe immer noch ein problem, denn die app ist immer noch false zurückgeben, wenn ich versuche zu laufen getenv('DB_NAME')

Irgendwelche Vorschläge?

  • Korrigieren Sie mich, wenn ich falsch bin, aber ich habe noch nie gehört, Laravel automatisch Umgang mit einem .env.php für Umwelt-Erkennung? Sind Sie sicher, die Datei wird irgendwo?
  • laravel.com/docs/configuration#environment-configuration und laracasts.com/lessons/private-keys-go-here (Sie müssen möglicherweise zu zahlen für ein Abonnement, um Zugriff auf das video).
  • Sie werden auch sehen, dass .env.php und .env.local.php sind enthalten in der Standard - .gitignore - Datei.
  • Danke für die links, ich war eigentlich nicht bewusst! Sie Leben, Sie lernen 🙂 Leider habe ich keine Idee, was das problem sein könnte dann. Vielleicht könnten Sie überprüfen Sie die Datei Berechtigungen und stellen Sie sicher, dass .env.php lesbar ist oder dass die Anwendung erlaubt das setzen von Umgebungsvariablen mit allen Namen. Dies kann hilfreich sein (vor allem die Beschreibung über safe_mode_allowed_env_vars): de3.php.net/manual/en/function.putenv.php
  • laravel 4.1 Unordnung zu groß. ich habe ein etwas anderes problem. es erkennt die Umwelt, kann Sie aber nicht laden Sie die richtige config-Dateien.... (4.0.9 läuft wunderbar mit gleichen codes) laravel 4.0.* waren viel besser als diese 4.1 konnte Ihnen nicht helfen, mit diesem, wie ich selbst bin versucht zu finden, warum der hack ist nicht be-richtigen Dateien.
  • Hallo, bitte finden Sie in den aktualisierten Frage - halb-Lösung, aber die Umgebungsvariablen noch nicht gelesen von der Produktion Anwendung.
  • ein update für diese Lösung?
  • Setzen Sie die Umgebungsvariablen auf die live-server in httpd.conf-Datei oder über eine include-Datei. Siehe meine Antwort unten.

InformationsquelleAutor Gravy | 2014-03-02
Schreibe einen Kommentar