2014-03-04 24 views
5

Ich fragte mich, ob jemand helfen könnte.Laravel 4 Umgebungen funktionieren nicht

Ich habe die Umgebung Setup für Laravel 4 durchlaufen und es scheint nicht zu funktionieren.

In meinem MAMP-Setup erstellt i

In meinem bootstrap- protected.dev host> start.php Ich mag so meine lokale URL habe

$env = $app->detectEnvironment(array(
    'local' => array('protected.dev') 
)); 

Ich habe ein 'lokales' Verzeichnis erstellt in das app-> config-Verzeichnis, kopiert über die Standard-Datenbank.php-Datei und änderte dann die Datenbank.php-Datei im 'lokalen' Verzeichnis.

Wenn ich versuche, und zeigen Sie die Seite, erhalte ich die

Access denied for user 'root'@'localhost' 

, die in der Standard ist config-> database.php Datei.

Es scheint aus irgendeinem Grund nicht seine lokale Umgebung zu erkennen.

Jede Hilfe würde sehr geschätzt werden.

Cheers,

Antwort

16

In Laravel 4 sind die enviroments gesetzt durch den Computernamen, die nicht durch das: Unter Linux können Sie Ihre Maschine den Hostnamen, indem Sie den folgenden Befehl im Terminal herausfinden Webserver-URL

Um Ihren Hostnamen zu ermitteln, verwenden Sie den Befehl hostname terminal.

Geben Sie Hostname in Ihrem Terminal (das funktioniert auf Linux und Mac) und schneiden und fügen Sie das Ergebnis in Ihrer Datei start.php in der lokalen Variablen und es sollte gut funktionieren.

Beispiel:

angoru @ Engel-Berg: ~ $ hostname

Engel-Berg

mein start.php

$env = $app->detectEnvironment(array(
    'local' => array('angel-mountain'), // Change this to your local machine hostname. 
    'staging' => array('your-staging-machine-name'), 
    'production' => array('your-production-machine-name'), 
)); 

Für weitere Erklärung: Environment Configuration

+0

Das löst das Problem ... Vielen Dank dafür! ... Muss ich meine app.php 'url' auf irgendetwas einstellen? – BigJobbies

+0

Es ist nicht notwendig, dass die Site funktioniert, aber Sie sollten sie benötigen, wenn Sie Artisan-Aufgaben ausführen. – angoru

+0

Das macht Sinn ... Wenn also die Umgebung verwendet wird, um lokale oder Produktion automatisch zu erkennen, wo sollte die URL eingestellt werden? – BigJobbies

1

In Umgebungen mit mehreren Entwicklern kann jeder seinen Hostnamen dem lokalen Array beim Start hinzufügen.php:

$env = $app->detectEnvironment(array(
    'local' => array('user1-hostname','user2-hostname'), // Developers local hostnames 
    'staging' => array('your-staging-machine-name'), 
    'production' => array('your-production-machine-name'), 
)); 
0

Bei testen Sie Laravel Projekt mit localhost Domäne oder einige andere virtuelle Hosts ohne Punkte (was ich normalerweise tue), könnte es hilfreich sein, einen solchen Code zu verwenden, in bootstrap/start.php:

$env = $app->detectEnvironment(function(){ 
    if (strpos($_SERVER['HTTP_HOST'],'.') === false) { 
     return 'local'; 
    } 
    return 'production'; 
}); 

nach:

$app = new Illuminate\Foundation\Application; 

Dies macht, dass Sie auch Ihren Code in anderen Verzeichnis verschieben oder ohne Punkte auf eine andere Maschine/ein anderes virtuellen Host verschieben, müssen Sie sich nicht in der Maschine nam hinzufügen e in local Maschinen.

Sie können natürlich weitere Regeln hinzufügen (einschließlich 127.0.0.1 oder einige Hosts mit .dev Name), wenn Sie benötigen.